{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/matthewdixon/anaconda/lib/python2.7/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n",
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "\"\"\"\n",
    "In this example we demonstrate how to implement a DQN agent and\n",
    "train it to trade optimally on a periodic price signal.\n",
    "Training time is short and results are unstable.\n",
    "Do not hesitate to run several times and/or tweak parameters to get better results.\n",
    "Inspired from https://github.com/keon/deep-q-learning\n",
    "\"\"\"\n",
    "import random\n",
    "import sys\n",
    "sys.path.append('/Users/matthewdixon/Downloads/dq-MM/')\n",
    "import numpy as np\n",
    "from keras.layers import Dense\n",
    "from keras.models import Sequential\n",
    "from keras.optimizers import Adam\n",
    "from tgym.envs import SpreadTrading\n",
    "%matplotlib inline\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "class DQNAgent:\n",
    "    def __init__(self,\n",
    "                 state_size,\n",
    "                 action_size,\n",
    "                 episodes,\n",
    "                 episode_length,\n",
    "                 memory_size=2000,\n",
    "                 train_interval=100,\n",
    "                 gamma=0.95,\n",
    "                 learning_rate=0.001,\n",
    "                 batch_size=64,\n",
    "                 epsilon_min=0.01\n",
    "                 ):\n",
    "        self.state_size = state_size\n",
    "        self.action_size = action_size\n",
    "        self.memory_size = memory_size\n",
    "        self.memory = [None] * memory_size\n",
    "        self.gamma = gamma\n",
    "        self.epsilon = 1.0\n",
    "        self.epsilon_min = epsilon_min\n",
    "        self.epsilon_decrement = (self.epsilon - epsilon_min)\\\n",
    "            * train_interval / (episodes * episode_length)  # linear decrease rate\n",
    "        self.learning_rate = learning_rate\n",
    "        self.train_interval = train_interval\n",
    "        self.batch_size = batch_size\n",
    "        self.brain = self._build_brain()\n",
    "        self.i = 0\n",
    "\n",
    "    def _build_brain(self):\n",
    "        \"\"\"Build the agent's brain\n",
    "        \"\"\"\n",
    "        brain = Sequential()\n",
    "        neurons_per_layer = 24\n",
    "        activation = \"relu\"\n",
    "        brain.add(Dense(neurons_per_layer,\n",
    "                        input_dim=self.state_size,\n",
    "                        activation=activation))\n",
    "        brain.add(Dense(neurons_per_layer, activation=activation))\n",
    "        brain.add(Dense(self.action_size, activation='linear'))\n",
    "        brain.compile(loss='mse', optimizer=Adam(lr=self.learning_rate))\n",
    "        return brain\n",
    "\n",
    "    def act(self, state):\n",
    "        \"\"\"Acting Policy of the DQNAgent\n",
    "        \"\"\"\n",
    "        action = np.zeros(self.action_size)\n",
    "        valid_actions = []\n",
    "        position = state[-3:]\n",
    "        \n",
    "        if all(position == [1,0,0]): # flat\n",
    "            valid_actions = [0,1,2]\n",
    "        elif all(position == [0,1,0]):  # long\n",
    "            valid_actions = [0,2]  # hold or sell\n",
    "        else: # short\n",
    "            valid_actions = [0,1]  # hold or buy\n",
    "        \n",
    "        if np.random.rand() <= self.epsilon:    \n",
    "            action[valid_actions[random.randrange(len(valid_actions))]] = 1   \n",
    "        else:\n",
    "            state = state.reshape(1, self.state_size)\n",
    "            act_values = self.brain.predict(state)\n",
    "            #print act_values[0]\n",
    "            action[valid_actions[np.argmax(act_values[0][valid_actions])]] = 1\n",
    "        return action\n",
    "\n",
    "    def observe(self, state, action, reward, next_state, done, warming_up=False):\n",
    "        \"\"\"Memory Management and training of the agent\n",
    "        \"\"\"\n",
    "        self.i = (self.i + 1) % self.memory_size\n",
    "        self.memory[self.i] = (state, action, reward, next_state, done)\n",
    "        if (not warming_up) and (self.i % self.train_interval) == 0:\n",
    "            if self.epsilon > self.epsilon_min:\n",
    "                self.epsilon -= self.epsilon_decrement\n",
    "            state, action, reward, next_state, done = self._get_batches()\n",
    "            reward += (self.gamma\n",
    "                       * np.logical_not(done)\n",
    "                       * np.amax(self.brain.predict(next_state),\n",
    "                                 axis=1))\n",
    "            q_target = self.brain.predict(state)\n",
    "            #print \"state: \", state[0]\n",
    "            #print \"action[0]: \", action[0]\n",
    "            #print \"action[1]: \", action[1]\n",
    "            #print \"q_target: \", q_target[action[0], action[1]]\n",
    "            #print \"reward: \", reward\n",
    "            \n",
    "            q_target[action[0], action[1]] = reward\n",
    "            return self.brain.fit(state, q_target,\n",
    "                                  batch_size=self.batch_size,\n",
    "                                  epochs=1,\n",
    "                                  verbose=False)\n",
    "\n",
    "    def _get_batches(self):\n",
    "        \"\"\"Selecting a batch of memory\n",
    "           Split it into categorical subbatches\n",
    "           Process action_batch into a position vector\n",
    "        \"\"\"\n",
    "        batch = np.array(random.sample(self.memory, self.batch_size))\n",
    "        state_batch = np.concatenate(batch[:, 0])\\\n",
    "            .reshape(self.batch_size, self.state_size)\n",
    "        action_batch = np.concatenate(batch[:, 1])\\\n",
    "            .reshape(self.batch_size, self.action_size)\n",
    "        reward_batch = batch[:, 2]\n",
    "        next_state_batch = np.concatenate(batch[:, 3])\\\n",
    "            .reshape(self.batch_size, self.state_size)\n",
    "        done_batch = batch[:, 4]\n",
    "        # action processing\n",
    "        action_batch = np.where(action_batch == 1)\n",
    "        return state_batch, action_batch, reward_batch, next_state_batch, done_batch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "#import sys\n",
    "#sys.path.append('/Users/matthewdixon/Downloads/Trading-Gym/')\n",
    "#from tgym.envs import SpreadTrading\n",
    "#from tgym.gens.deterministic import WavySignal\n",
    "#from tgym.gens.random import AR1\n",
    "from tgym.gens.csvstream import CSVStreamer\n",
    "# Instantiating the environmnent\n",
    "generator = CSVStreamer(filename='../data/AMZN-L1.csv')\n",
    "#generator = AR1(a=0.1, ba_spread=0.1)   #WavySignal(period_1=25, period_2=50, epsilon=-0.5)\n",
    "episodes = 100\n",
    "episode_length = 400\n",
    "trading_fee = .0\n",
    "time_fee = 0\n",
    "history_length = 2\n",
    "environment = SpreadTrading(spread_coefficients=[1],\n",
    "                            data_generator=generator,\n",
    "                                trading_fee=trading_fee,\n",
    "                                time_fee=time_fee,\n",
    "                                history_length=history_length)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "state = environment.reset()\n",
    "# Instantiating the agent\n",
    "memory_size = 3000\n",
    "state_size = len(state)\n",
    "gamma = 0.96\n",
    "epsilon_min = 0.01\n",
    "batch_size = 64\n",
    "action_size = len(SpreadTrading._actions)\n",
    "train_interval = 10\n",
    "learning_rate = 0.001\n",
    "agent = DQNAgent(state_size=state_size,\n",
    "                     action_size=action_size,\n",
    "                     memory_size=memory_size,\n",
    "                     episodes=episodes,\n",
    "                     episode_length=episode_length,\n",
    "                     train_interval=train_interval,\n",
    "                     gamma=gamma,\n",
    "                     learning_rate=learning_rate,\n",
    "                     batch_size=batch_size,\n",
    "                     epsilon_min=epsilon_min)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-1614.2766   259.9944  1560.3267]\n",
      "[-968.71735   115.208725  676.751   ]\n",
      "[-768.54614  156.22867  531.3052 ]\n",
      "[-768.53314  154.577    530.10254]\n",
      "[-1063.5344    355.69556  1164.2972 ]\n",
      "[-490.92935  219.9465   345.1379 ]\n",
      "[-339.80334  230.88425  259.27557]\n",
      "[-300.0792   221.48132  236.31671]\n",
      "[-298.92703  219.47346  234.68428]\n",
      "[-263.3491   220.34482  203.0032 ]\n",
      "[-196.79391  215.44624  174.33176]\n",
      "[-643.70325  364.6928   879.065  ]\n",
      "[-529.93054  367.23532  803.2838 ]\n",
      "[-529.7739   346.93646  796.4288 ]\n",
      "[-478.14557  359.29495  765.4579 ]\n",
      "[ 16.931746 242.12386   77.22698 ]\n",
      "[ -1.0915122 231.0158     70.317116 ]\n",
      "[ 44.462944 234.21417   46.299534]\n",
      "[ 34.92208 218.52374  49.66454]\n",
      "[-314.50632  259.07666  617.5656 ]\n",
      "[-256.92844  322.32834  573.8034 ]\n",
      "[-204.61076  313.67435  539.8428 ]\n",
      "[ 262.99448  232.8314  -103.668  ]\n",
      "[ 303.33878   220.31445  -116.058304]\n",
      "[ 303.60376  222.96992 -119.20332]\n",
      "[-92.47566 305.70847 433.5396 ]\n",
      "[-65.954346 346.2579   439.03528 ]\n",
      "[-57.94802 299.7024  407.65805]\n",
      "[ 369.90576  231.15532 -160.27202]\n",
      "[ 383.8384   197.36357 -174.03574]\n",
      "[-29.308668 254.12491  393.766   ]\n",
      "[ 416.6959   207.32558 -185.14778]\n",
      "[ 395.28485  194.54149 -189.71928]\n",
      "[  1.0032966 230.39482   326.96588  ]\n",
      "[ 566.4357   511.53577 -238.90025]\n",
      "[239.04132 705.3621  199.72264]\n",
      "[ 444.0609   197.07143 -226.8661 ]\n",
      "Ep:0| rew:218.6| eps:0.8| loss:15975.4482\n",
      "[107.728134 220.53938  253.59003 ]\n",
      "[283.09128 687.46875 131.9855 ]\n",
      "[ 607.3796   376.30508 -307.32315]\n",
      "[ 491.8029   176.56361 -268.39597]\n",
      "[153.6066  246.22182 198.97278]\n",
      "[ 533.34576  148.1677  -266.653  ]\n",
      "[169.97266 173.45787 172.72598]\n",
      "[ 539.0696  144.1219 -270.0518]\n",
      "[ 567.8553   161.93411 -267.903  ]\n",
      "[152.22859 157.79707 173.67422]\n",
      "[182.34961 176.41692 148.18303]\n",
      "[135.04924 111.78032 171.4572 ]\n",
      "[ 475.29022  187.35526 -199.32323]\n",
      "[ 671.61395  437.3607  -334.97833]\n",
      "[ 637.6705   271.83606 -264.57294]\n",
      "[175.85222   92.884865 142.02234 ]\n",
      "[ 568.30786  130.08742 -292.3047 ]\n",
      "[189.87505 137.28624  96.50612]\n",
      "[183.40276 105.0554  104.0634 ]\n",
      "[ 546.52765  101.4907  -284.94846]\n",
      "[ 560.8531   103.75114 -277.66718]\n",
      "[ 547.7642    95.10148 -285.4066 ]\n",
      "[ 547.7977    92.0971  -281.01584]\n",
      "[168.366     52.851345 108.99835 ]\n",
      "[169.8397    89.33288   95.932816]\n",
      "[193.29836 118.68334  83.19386]\n",
      "[191.03566  100.118065  78.77604 ]\n",
      "[169.62186  74.69254  84.71253]\n",
      "[ 556.8951    103.451866 -283.5607  ]\n",
      "[ 565.2538   106.88009 -276.08383]\n",
      "[193.24214  90.91891  71.68838]\n",
      "[196.3955    93.713585  71.543816]\n",
      "[ 567.3863    109.009514 -275.79883 ]\n",
      "[202.4682    57.518303  77.53694 ]\n",
      "[203.83173  72.96592  73.92348]\n",
      "[207.70656  87.03991  66.56958]\n",
      "[197.02205  69.62322  64.49829]\n",
      "[197.02205  69.62322  64.49829]\n",
      "[196.27872   67.954384  65.35837 ]\n",
      "[203.42162   73.175865  56.098335]\n",
      "[184.15958   72.899864  50.306953]\n",
      "[ 549.15186  102.50259 -243.64622]\n",
      "[205.66081  100.600235  43.125385]\n",
      "[205.03793   95.62387   41.286182]\n",
      "[200.92384  91.39072  46.52486]\n",
      "[185.86911   78.167305  44.598576]\n",
      "[187.38116   81.13076   43.498722]\n",
      "[239.74199  142.59874   34.849735]\n",
      "[236.81871  139.70761   35.859386]\n",
      "[231.63954 129.58983  39.60832]\n",
      "[202.88364   93.92218   45.753643]\n",
      "[ 533.2882   94.9613 -210.0297]\n",
      "[ 545.798     110.655365 -205.2863  ]\n",
      "[204.99075   51.458946  51.15505 ]\n",
      "[189.3691   16.20153  67.32401]\n",
      "[ 522.9523    92.65934 -197.80412]\n",
      "[175.19162    6.112846  74.22311 ]\n",
      "[161.81189  -20.219524  85.20315 ]\n",
      "[ 470.88162    34.058563 -131.66188 ]\n",
      "[ 485.58066    41.241486 -124.46548 ]\n",
      "[155.65395 -22.77841  87.02305]\n",
      "[ 457.42822    21.027582 -142.79536 ]\n",
      "[ 469.8484     26.680025 -135.25854 ]\n",
      "[ 499.36066   81.37578 -145.60446]\n",
      "[ 480.2307     38.944656 -107.76949 ]\n",
      "[150.36101   -1.609579  76.75874 ]\n",
      "[180.9644   45.48837  59.17133]\n",
      "[143.29701 -34.94965 103.63687]\n",
      "[116.63616  -56.796276 113.93884 ]\n",
      "[301.3774    377.2761      4.3709383]\n",
      "[536.2794  353.8533  -71.78847]\n",
      "[538.17456  335.26437  -81.621826]\n",
      "[318.74026   435.46088     3.6056418]\n",
      "[529.0613   351.1025   -63.752956]\n",
      "[137.29936   67.950584  71.84816 ]\n",
      "[136.01256   66.95638   64.622086]\n",
      "[137.0488    80.96667   61.159958]\n",
      "[138.15202   80.628136  67.33504 ]\n",
      "[138.17336   83.39921   65.290634]\n",
      "[ 467.1848     95.69976  -115.409805]\n",
      "[129.64178   47.064182  72.73848 ]\n",
      "[129.94351   69.352455  68.381165]\n",
      "[129.37946     7.2408957  88.3654   ]\n",
      "[119.88858  -31.398142 107.51578 ]\n",
      "[132.75067   52.367527  71.946625]\n",
      "[118.227486  35.518654  82.43362 ]\n",
      "[105.15378   23.777182  82.95545 ]\n",
      "[125.494576  72.245415  70.654945]\n",
      "[125.52036   69.59457   72.901344]\n",
      "[118.71075   85.340355  70.8985  ]\n",
      "[118.87763  71.28542  82.78143]\n",
      "[427.4965    78.238014 -56.07026 ]\n",
      "[422.8505    67.02882  -44.003754]\n",
      "[422.8505    67.02882  -44.003754]\n",
      "[423.98865  101.308556 -40.685287]\n",
      "[429.34552  87.46084 -38.61535]\n",
      "[110.94063  64.55822  79.36644]\n",
      "[104.245674  84.01972   79.442085]\n",
      "[106.58141   88.620384  85.52271 ]\n",
      "[399.96127   60.11768   -9.353766]\n",
      "[396.4506     56.915592   -9.2612295]\n",
      "[398.40067   62.948467  -6.047523]\n",
      "[388.98932    71.83164     0.9663679]\n",
      "[393.6952    40.910164  57.225838]\n",
      "[346.28867    5.295405  83.34376 ]\n",
      "[396.36786   82.15627   27.636168]\n",
      "[392.18912   72.08146   26.893972]\n",
      "[390.14868   89.22532   21.766798]\n",
      "[396.3883    82.14362   27.641874]\n",
      "[320.57614  -12.036209  79.91187 ]\n",
      "[77.49858  60.889633 98.310745]\n",
      "[372.46643   66.2789    21.924086]\n",
      "[420.5574  352.8607  106.93507]\n",
      "[98.15464 97.29024 95.97193]\n",
      "[90.75668 84.58478 98.81965]\n",
      "[362.05786   72.56663   41.940094]\n",
      "[341.93063    8.516252  94.29508 ]\n",
      "[298.19495  -16.506628 104.27652 ]\n",
      "[295.71298  -25.889727 119.57837 ]\n",
      "[289.35352  -31.750612 121.297714]\n",
      "[321.77267  38.63797  43.46441]\n",
      "[ 65.17316   47.655056 106.90837 ]\n",
      "[345.25873  67.06241  57.30996]\n",
      "[333.71716    8.223203 109.68011 ]\n",
      "[ 50.507668 -20.38804  130.35294 ]\n",
      "[332.39014   79.603935  67.474785]\n",
      "[341.8728   78.93423  74.95691]\n",
      "Ep:1| rew:140.4| eps:0.6| loss:4157.3794\n",
      "[317.8782    30.601358  75.05672 ]\n",
      "[331.14313   63.263824  91.74564 ]\n",
      "[315.41162  71.80917  99.55429]\n",
      "[ 58.184742  87.27157  102.51546 ]\n",
      "[318.89258  94.68315 100.39389]\n",
      "[324.45914  89.12391 104.82153]\n",
      "[322.34253   66.28559  107.104904]\n",
      "[ 29.059074  52.548252 101.73607 ]\n",
      "[310.64703  95.05583 109.33652]\n",
      "[ 50.31996  68.565   107.43178]\n",
      "[310.4237    60.831585 116.547554]\n",
      "[ 40.1035   55.85979 103.66984]\n",
      "[294.20453  40.9042  113.51484]\n",
      "[ 22.079933  37.281544 103.47819 ]\n",
      "[299.80878  78.10509 122.70319]\n",
      "[300.6297   79.55946 123.02323]\n",
      "[ 14.916663  29.64172  106.22752 ]\n",
      "[281.16815   88.271416 129.51768 ]\n",
      "[298.8216    46.822987 118.3388  ]\n",
      "[36.824055 73.07078  94.74727 ]\n",
      "[ 32.891186  56.966694 104.68589 ]\n",
      "[285.03345  89.30048 133.0469 ]\n",
      "[284.39258  74.62834 139.5064 ]\n",
      "[286.44443  93.30217 135.66138]\n",
      "[282.51193  65.93186 150.53493]\n",
      "[275.80566   64.775185 154.11731 ]\n",
      "[30.702042 80.5259   97.449486]\n",
      "[ 50.695423 104.76046   92.44488 ]\n",
      "[265.79776  89.09239 144.02045]\n",
      "[25.01453  67.214554 94.14382 ]\n",
      "[299.83075 154.11412 215.97655]\n",
      "[275.39053  121.656815 176.86394 ]\n",
      "[265.41946  121.019775 200.90923 ]\n",
      "[282.1456 135.7832 208.3326]\n",
      "[278.70953 148.3948  225.02708]\n",
      "[288.59848 180.0609  240.66577]\n",
      "[313.03333 185.80644 227.56947]\n",
      "[318.62518 128.75957 178.87003]\n",
      "[ 85.04235 186.91034 107.73857]\n",
      "[ 71.28197 150.61568  98.78657]\n",
      "[ 53.779037  96.662994 100.57081 ]\n",
      "[259.19153  94.77455 164.26343]\n",
      "[252.08331  105.665634 180.79303 ]\n",
      "[271.04227 119.96418 185.29813]\n",
      "[278.2547  109.2936  168.61731]\n",
      "[262.9808  91.6783 151.6686]\n",
      "[255.80951   77.552376 164.25073 ]\n",
      "[252.40114  65.68323 166.6288 ]\n",
      "[ 12.977097  17.008404 114.108635]\n",
      "[ -1.825528    6.4671907 113.716286 ]\n",
      "[250.759   102.94938 155.29796]\n",
      "[290.04446 156.42006 177.31354]\n",
      "[256.60385 123.67462 152.83235]\n",
      "[ 5.154691 29.25245  86.987175]\n",
      "[255.90407  77.17709 146.61621]\n",
      "[31.880926 57.44755  93.36819 ]\n",
      "[281.7698  127.88908 177.73389]\n",
      "[270.69632  104.107185 157.64955 ]\n",
      "[28.46925  80.25911  81.291176]\n",
      "[266.00497 146.81825 165.27213]\n",
      "[267.76617 156.33015 159.93285]\n",
      "[287.83603 139.77396 131.82655]\n",
      "[255.76018 113.80565 132.15952]\n",
      "[-9.719006 35.735264 75.53454 ]\n",
      "[251.86884  123.980034 143.62296 ]\n",
      "[45.17444 97.42794 73.85728]\n",
      "[258.63885 112.42694 124.01807]\n",
      "[ 53.04297  121.531136  77.3036  ]\n",
      "[257.79248 108.52464 124.49412]\n",
      "[224.63478 150.9832  183.68674]\n",
      "[323.63684 158.8475  125.4439 ]\n",
      "[257.701    97.07946 122.46201]\n",
      "[-11.491713   -3.5293686  91.01769  ]\n",
      "[-19.573433  86.27854   77.2459  ]\n",
      "[259.85706  95.93407 119.09911]\n",
      "[254.01083 101.70111 109.15774]\n",
      "[244.61305 129.28012 143.10803]\n",
      "[288.39032 131.4193  114.99246]\n",
      "[-15.731352  20.944393  69.731094]\n",
      "[231.29037 156.46284 168.26714]\n",
      "[327.16635 162.41281 115.62874]\n",
      "[290.6737  134.92113 109.61838]\n",
      "[261.3784  109.21189 110.57933]\n",
      "[252.86583   81.30908   98.055534]\n",
      "[258.00092  90.8656  103.19543]\n",
      "[258.74655  75.10728 109.55379]\n",
      "[281.9165   125.376595 121.70882 ]\n",
      "[264.43457  96.49518 103.54538]\n",
      "[259.06213  93.27538 101.9422 ]\n",
      "[261.96735  95.01753 104.0211 ]\n",
      "[-5.6869373  6.655792  76.94902  ]\n",
      "[-9.455575 -6.317932 79.56331 ]\n",
      "[262.81964  76.02961 104.94103]\n",
      "[263.34357   90.20562   99.928825]\n",
      "[262.5974   91.90153  98.09882]\n",
      "[263.15115  75.95295 104.31352]\n",
      "[251.52089  78.92811 108.61025]\n",
      "[243.04059 134.3636  176.76126]\n",
      "[238.33934 133.41447 178.24799]\n",
      "[ 5.5882525 29.886732  53.951763 ]\n",
      "[257.5432   80.624    86.48252]\n",
      "[257.1303    95.39306  103.560616]\n",
      "[275.72278  93.49186  92.14928]\n",
      "[-15.729152  19.888363  67.96825 ]\n",
      "[-14.10059  -4.14539  77.03566]\n",
      "[263.94217  98.29142  87.38959]\n",
      "[-12.507995 -16.650871  84.806885]\n",
      "[255.96257   57.996475  87.94457 ]\n",
      "[254.0596    58.328262  88.493675]\n",
      "[255.711     59.021706  89.31393 ]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[254.6904    54.253014  88.00538 ]\n",
      "[253.39085  50.5067   86.51295]\n",
      "[253.60275  50.45137  86.54161]\n",
      "[253.38026   50.454197  86.591255]\n",
      "[252.59874   30.956013  92.03665 ]\n",
      "[251.4352   76.73456  73.62871]\n",
      "[-14.528659    2.5096235  72.98269  ]\n",
      "[260.12448   77.06353   89.979065]\n",
      "[260.53824   61.2372    96.483284]\n",
      "[255.41614   54.857117  90.296776]\n",
      "[-3.45246  4.21754 73.1177 ]\n",
      "[-9.077881  -6.3254876 77.55094  ]\n",
      "[17.777374 25.895414 70.792366]\n",
      "[265.43112   86.872925 108.45012 ]\n",
      "[267.9401    76.54962  111.161545]\n",
      "[268.60385  93.3721  106.31654]\n",
      "[267.9597    76.53725  111.174805]\n",
      "[268.96478  74.05029 112.7617 ]\n",
      "[265.1487    50.789967 119.75941 ]\n",
      "[256.43588  55.9754  135.51741]\n",
      "[275.43387 101.8947  132.35594]\n",
      "[281.0382    98.053825 132.88855 ]\n",
      "[277.89505   91.563286 135.07718 ]\n",
      "[278.60428  85.5704  134.6689 ]\n",
      "[274.8786   77.92897 137.27818]\n",
      "[36.002808 59.46593  62.664787]\n",
      "[278.59756  85.56617 134.73808]\n",
      "[35.91596  71.47973  55.440758]\n",
      "[288.62778  93.43184 111.60275]\n",
      "[272.04343  78.09026 103.43657]\n",
      "[25.188375 46.93717  53.91328 ]\n",
      "[277.3222  109.42447 112.2332 ]\n",
      "[281.1995  123.54036 118.42995]\n",
      "[307.6731  185.89316 168.36668]\n",
      "[320.04388 205.27803 167.01486]\n",
      "[319.9858  184.33368 174.21068]\n",
      "[316.86176 181.24341 175.31429]\n",
      "[344.6925  120.95454 108.96815]\n",
      "[263.49506   59.839436  86.96435 ]\n",
      "[265.833    78.61644  90.88592]\n",
      "[266.53275   49.506767  97.30295 ]\n",
      "[ 8.8477545 11.8449335 64.23996  ]\n",
      "[266.5524    49.4942    97.316376]\n",
      "[264.65817  42.10051  93.79575]\n",
      "[234.18703  86.97114 159.22821]\n",
      "[327.04358 122.80911 155.50285]\n",
      "[265.03     93.51531 126.82123]\n",
      "[54.612865 98.30972  56.00152 ]\n",
      "[ 4.002483 11.564618 66.15533 ]\n",
      "[264.93845   83.673325  92.55058 ]\n",
      "[277.64633   93.29986   93.380974]\n",
      "[276.01788   62.737053 102.45949 ]\n",
      "[269.67197   30.621038 109.43058 ]\n",
      "[264.07346   24.993399 114.97877 ]\n",
      "[266.94806   37.923252 104.70366 ]\n",
      "[269.94354   46.232845 104.881325]\n",
      "[265.48685   58.028473 119.9254  ]\n",
      "[271.26447  44.61424 102.97724]\n",
      "[259.3167    26.106363  77.88067 ]\n",
      "[261.68173   27.46985   79.798836]\n",
      "[  8.118454 -33.214825 109.01425 ]\n",
      "[251.17441   10.149805  95.80719 ]\n",
      "[ 9.869963 -5.821394 80.08116 ]\n",
      "[265.28967   33.018246  83.97155 ]\n",
      "[261.87674   42.477394  73.452675]\n",
      "[264.8594    28.135796  83.93607 ]\n",
      "[265.03568   31.149612  82.894966]\n",
      "[261.8973    42.46769   73.457504]\n",
      "[265.829     47.975807  77.16321 ]\n",
      "[265.0514    31.137688  82.89224 ]\n",
      "[  6.0625715 -18.855637   82.08858  ]\n",
      "Ep:2| rew:143.0| eps:0.41| loss:2302.0525\n",
      "[ 6.5104117 -3.4272273 74.53071  ]\n",
      "[249.34016  76.58159 119.02543]\n",
      "[272.752    66.38454  95.92028]\n",
      "[279.89645   60.171383  84.4363  ]\n",
      "[278.81448 115.55107 150.55946]\n",
      "[314.00238 150.4754  162.81555]\n",
      "[317.0599  153.64853 162.00386]\n",
      "[317.30634 149.33867 160.31378]\n",
      "[318.2328  137.20041 151.64218]\n",
      "[283.04913   80.075645 104.35613 ]\n",
      "[293.58893  99.01755 120.79454]\n",
      "[292.336    94.54322 114.24743]\n",
      "[290.00446   90.404    110.691574]\n",
      "[290.31876  81.22499  99.6156 ]\n",
      "[283.7318   56.68096  80.10937]\n",
      "[-4.0842104 21.9667    67.59259  ]\n",
      "[292.42914   77.149376  92.7206  ]\n",
      "[273.57007   47.590405  92.9662  ]\n",
      "[265.22635   52.045895 110.976555]\n",
      "[277.9728   75.65721 131.60484]\n",
      "[294.7054    71.762886 141.59708 ]\n",
      "[287.57883   52.336834 154.38135 ]\n",
      "[296.83203  105.216385 131.35904 ]\n",
      "[302.80334 125.35212 122.54724]\n",
      "[305.5792  130.8651  120.42735]\n",
      "[301.94528  111.84304  126.504715]\n",
      "[298.61966  105.521095 128.78241 ]\n",
      "[306.85355 101.02834 110.78656]\n",
      "[289.05664   88.19388  105.905365]\n",
      "[293.97195  77.39126  90.17173]\n",
      "[276.17346  64.55134  85.29852]\n",
      "[277.51285  65.14508  83.19515]\n",
      "[278.4298   78.85101  78.97969]\n",
      "[280.24432  70.31545  81.32488]\n",
      "[27.041388 29.752567 71.759285]\n",
      "[278.46155  78.84257  78.94016]\n",
      "[280.0304   67.28517  82.2335 ]\n",
      "[276.68668  61.01191  84.48793]\n",
      "[282.54715  70.46645  77.57046]\n",
      "[278.54166   48.590096  84.682785]\n",
      "[265.8489    64.038155 118.30788 ]\n",
      "[307.4251   72.63557 103.58488]\n",
      "[276.4137    59.037582  81.7941  ]\n",
      "[282.52805  70.4583   77.63408]\n",
      "[278.45758   47.530766  82.08106 ]\n",
      "[265.92947   63.008156 115.652954]\n",
      "[24.102493 22.243784 63.43583 ]\n",
      "[279.03046   75.482765  70.3121  ]\n",
      "[281.63647   68.123344  72.722115]\n",
      "[277.1808    46.150757  79.41731 ]\n",
      "[22.64434  24.492014 60.105385]\n",
      "[272.14493  42.23828  85.17128]\n",
      "[275.13318  56.62782  76.52645]\n",
      "[279.63312   76.56539   69.959595]\n",
      "[280.3715    68.278175  71.57036 ]\n",
      "[26.719582 29.357985 70.818665]\n",
      "[278.1823    76.62662   68.389404]\n",
      "[280.12808   65.263535  72.547806]\n",
      "[275.3505    60.780724  76.82279 ]\n",
      "[23.40106 34.03787 61.53687]\n",
      "[277.9825    50.514675  81.594666]\n",
      "[25.666784 34.54594  56.935966]\n",
      "[275.7169    50.600735  80.420845]\n",
      "[273.83237   60.950928  77.19449 ]\n",
      "[26.22359  21.201517 67.26153 ]\n",
      "[21.926958 16.423756 68.324394]\n",
      "[264.79147   40.42326   79.378456]\n",
      "[-6.306453 25.292133 68.601524]\n",
      "[282.4939    72.98358   53.647236]\n",
      "[268.25867   49.195393  58.049343]\n",
      "[264.67978   57.961994  48.23666 ]\n",
      "[268.25867   49.195393  58.049343]\n",
      "[264.67978   57.961994  48.23666 ]\n",
      "[262.13678  72.21993  65.6499 ]\n",
      "[280.04504  73.01586  53.65505]\n",
      "[265.79767   49.256966  58.02196 ]\n",
      "[255.53714   33.437973  67.75811 ]\n",
      "[248.04163   34.114746  71.55114 ]\n",
      "[266.4516   57.02435  73.26678]\n",
      "[17.111729 33.081596 63.308796]\n",
      "[267.13354  48.4153   79.13394]\n",
      "[261.79086   44.974236  85.50157 ]\n",
      "[264.32166   58.75197   74.045204]\n",
      "[269.26517   78.503105  67.18258 ]\n",
      "[17.064373 32.227455 64.896355]\n",
      "[20.808723 45.517204 51.421715]\n",
      "[273.1041   83.93415  66.45136]\n",
      "[273.10422  83.93655  66.45202]\n",
      "[271.58316  67.33352  72.01961]\n",
      "[266.9896    60.752792  72.92594 ]\n",
      "[266.3202   79.74838  67.95644]\n",
      "[270.79025  86.2012   66.77058]\n",
      "[21.16712  34.91063  62.051353]\n",
      "[266.3202   79.74838  67.95644]\n",
      "[275.13586   77.682785  55.503227]\n",
      "[262.031     54.830444  59.990005]\n",
      "[ 6.603746  8.917269 86.03101 ]\n",
      "[256.6933    52.548344  93.26213 ]\n",
      "[260.96832  63.06996  80.81763]\n",
      "[25.295818 33.294277 71.121895]\n",
      "[251.9924    72.563896 115.88025 ]\n",
      "[290.04266  83.44699 105.43264]\n",
      "[20.213484 49.506542 52.588047]\n",
      "[264.06204  81.42509  69.11808]\n",
      "[20.904072 58.628597 55.64739 ]\n",
      "[266.51202   76.49921   76.606186]\n",
      "[264.6018    87.212685  73.57678 ]\n",
      "[264.86514   62.824474  81.1898  ]\n",
      "[259.9321    68.705666  80.17248 ]\n",
      "[260.86334   59.574936  85.522156]\n",
      "[25.07512  48.654217 61.676746]\n",
      "[260.63617   59.565506  85.5604  ]\n",
      "[257.67508  70.30066  82.92522]\n",
      "[261.5118    76.23692   80.330414]\n",
      "[257.69376   70.288025  82.93914 ]\n",
      "[258.5178    61.20359   88.380104]\n",
      "[257.74103  70.32361  82.89102]\n",
      "[258.50998  61.19218  88.39663]\n",
      "[261.44592  76.21387  80.36457]\n",
      "[258.53293   61.226383  88.34724 ]\n",
      "[256.0599   71.79562  85.24803]\n",
      "[256.7982    62.940228  91.09763 ]\n",
      "[256.05243   71.783424  85.263466]\n",
      "[259.9372    77.688034  82.62014 ]\n",
      "[29.06801  57.906876 76.50247 ]\n",
      "[259.95563   77.675354  82.6342  ]\n",
      "[256.826    62.9306   91.14737]\n",
      "[256.0893   71.75842  85.2911 ]\n",
      "[259.97415   77.66283   82.647896]\n",
      "[249.20515  60.87747 101.86129]\n",
      "[251.62453  68.30054  85.40304]\n",
      "[24.762775 54.340137 88.90576 ]\n",
      "[265.0235    92.41333  106.068214]\n",
      "[270.5622   111.96577   98.615005]\n",
      "[272.12677  103.13391  101.113846]\n",
      "[260.40002   72.5336   113.151344]\n",
      "[249.54497  68.7816   91.45205]\n",
      "[255.21489  88.30178  83.87032]\n",
      "[252.39496  70.60288  90.20547]\n",
      "[254.51344   87.28664   84.296844]\n",
      "[256.76266  79.46843  86.33543]\n",
      "[249.90869  60.62824  98.25245]\n",
      "[23.219519 50.994137 81.540245]\n",
      "[247.8642   60.86493 102.89571]\n",
      "[247.36023   69.308624  96.3763  ]\n",
      "[266.47287  112.95235  109.763115]\n",
      "[269.1341  119.66675 110.08834]\n",
      "[256.37927  93.53662  86.42629]\n",
      "[255.74652  95.47149  89.08454]\n",
      "[256.47583  81.01695  95.89951]\n",
      "[251.63171   67.24893   90.485214]\n",
      "[233.06474   63.398342  93.16766 ]\n",
      "[ 44.89811 102.70718  70.48539]\n",
      "[271.19916 106.25724  94.11756]\n",
      "[254.10661   93.332695  88.85009 ]\n",
      "[19.654427 59.95026  75.1424  ]\n",
      "[256.90103   84.112724  75.87928 ]\n",
      "[238.3944    55.892937  79.757645]\n",
      "[231.6814    60.649044  92.7468  ]\n",
      "[247.69762  86.85561  94.2939 ]\n",
      "[251.1788    94.553024  94.0669  ]\n",
      "[251.75668   80.1075   101.022446]\n",
      "[248.06734  77.3343  102.85698]\n",
      "[254.44417  72.28967  91.45578]\n",
      "[234.28407   70.13552   99.956696]\n",
      "[248.81189   90.07392  116.519936]\n",
      "[256.6274   96.54313 128.39685]\n",
      "[258.3838   85.63457 131.57614]\n",
      "[254.74399  73.80078 125.99757]\n",
      "[240.82678   67.94233  103.217026]\n",
      "[241.53072   59.029667 109.19991 ]\n",
      "[230.33093   45.634403 131.02434 ]\n",
      "[ 70.17152  134.58524  103.511055]\n",
      "[268.78873  88.79364 138.29915]\n",
      "[237.18687   54.070232 114.65526 ]\n",
      "[222.14577  42.07242 101.24097]\n",
      "[223.6107    42.181366 106.91405 ]\n",
      "[228.38474   52.52209   92.025764]\n",
      "[233.78699   57.195133  88.13814 ]\n",
      "[229.66753  45.55811 101.19765]\n",
      "[224.40675   48.737606 111.04463 ]\n",
      "[ 15.076268    2.2367394 118.274345 ]\n",
      "[219.53639  43.00142 110.70887]\n",
      "[234.64487   50.865482 119.14933 ]\n",
      "[225.43869   48.940056  88.27348 ]\n",
      "[224.33154  70.36298 114.33846]\n",
      "[257.44324  109.551056 121.17849 ]\n",
      "[259.6152  101.62382 123.26238]\n",
      "[ 48.294582  52.61296  106.553795]\n",
      "[218.12767   36.086464  99.08629 ]\n",
      "[215.43091   47.968872 117.628456]\n",
      "[ 11.481844   -1.1763763 108.1576   ]\n",
      "[217.94446   49.501007 119.93508 ]\n",
      "[249.47295  86.44665 130.00203]\n",
      "[254.3872   95.09812 125.82587]\n",
      "[252.4376   79.42768 131.64897]\n",
      "[250.83113  90.38055 128.41238]\n",
      "[251.7908  107.44264 141.7686 ]\n",
      "[275.3378   97.55618 114.62099]\n",
      "[243.90121   63.129295  90.88929 ]\n",
      "[241.2849   71.77314 103.29231]\n",
      "[241.38527  71.89323 103.1332 ]\n",
      "[236.94029   56.154892 110.892456]\n",
      "[23.431185 43.37937  78.40651 ]\n",
      "[236.96211   56.15052  110.905914]\n",
      "[236.07323   65.64022  105.545586]\n",
      "[24.33759  31.217062 89.44026 ]\n",
      "[238.74463  70.00011 109.53902]\n",
      "[ 32.30333   29.743937 104.73167 ]\n",
      "[218.73213   40.767998 100.256485]\n",
      "[220.84818  47.3728  110.2285 ]\n",
      "[236.07893  59.97478 122.41912]\n",
      "[233.56682   56.713875 119.75613 ]\n",
      "[230.70187   54.060787 118.24959 ]\n",
      "[19.578619 45.606956 82.538185]\n",
      "[26.948751 49.084934 87.431946]\n",
      "[239.44734  73.77984 100.98775]\n",
      "[235.91449   58.704704 109.529755]\n",
      "[230.27133  56.85563 117.97356]\n",
      "[237.72615   72.59089  108.108734]\n",
      "[238.8452    62.241962 112.55827 ]\n",
      "[238.8452    62.241962 112.55827 ]\n",
      "[26.6571   50.609318 94.15848 ]\n",
      "[242.04813  88.93523 148.46982]\n",
      "[261.7947  118.4675  147.81425]\n",
      "[266.23242 123.99718 144.71216]\n",
      "[263.28738 107.42122 151.1485 ]\n",
      "[261.04166  92.45592 140.52315]\n",
      "[245.2967    72.555786 124.636375]\n",
      "[234.25598   69.443245 102.944466]\n",
      "[235.61382   86.493454 116.54491 ]\n",
      "[255.4604   87.9547  105.59448]\n",
      "[238.64246   74.9686    99.853096]\n",
      "[233.67368   87.760635 116.19262 ]\n",
      "[253.43134  89.21167 105.2065 ]\n",
      "[236.64862   76.216156  99.42305 ]\n",
      "[236.64891   76.21735   99.410355]\n",
      "[233.67484  87.76636 116.18458]\n",
      "[13.782761 60.265125 81.43101 ]\n",
      "[244.51254 123.87533 155.46188]\n",
      "[  0.6686248  89.71242   101.418976 ]\n",
      "[266.70602  102.58952  112.175705]\n",
      "[224.4139   111.267715 151.06036 ]\n",
      "[249.97128  89.58321 106.35937]\n",
      "[230.29538  88.13898 117.3808 ]\n",
      "[249.97128  89.58321 106.35937]\n",
      "[230.29538  88.13898 117.3808 ]\n",
      "[246.98135 101.15256 123.19187]\n",
      "[35.442726 69.93221  75.71521 ]\n",
      "[229.82562   76.35205  101.799126]\n",
      "[  3.1900997  93.80489   101.79544  ]\n",
      "[263.85263 183.64832 197.69875]\n",
      "[229.74625   76.329994 101.84824 ]\n",
      "[229.76958  76.36599 101.80087]\n",
      "[231.87444  66.84656  87.95555]\n",
      "[210.8089    64.68138   93.117065]\n",
      "[225.9564   78.10927 105.85892]\n",
      "[229.47365   78.366516 103.86476 ]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[228.62358   66.439026  88.75077 ]\n",
      "[202.23755  99.36177 144.527  ]\n",
      "[275.87985 116.45301 122.58691]\n",
      "[228.8069   89.49863  97.59774]\n",
      "[232.60861  94.06134  94.80891]\n",
      "[229.94888  80.54634 100.16698]\n",
      "[222.51443   60.971092 111.20059 ]\n",
      "[218.43387  69.95559 106.94289]\n",
      "[222.52246  77.41473 106.7881 ]\n",
      "[225.02902  81.72599 110.73679]\n",
      "[211.00168   53.006523  78.1652  ]\n",
      "[205.29822  42.13102  93.35785]\n",
      "[205.22786   51.040707  79.50608 ]\n",
      "[209.97437  65.6941   96.43353]\n",
      "[207.9646    39.681778 143.30739 ]\n",
      "[189.03897   28.712357 152.94472 ]\n",
      "[169.11957     6.4829907 151.53532  ]\n",
      "[169.80067   15.825482 138.82959 ]\n",
      "[187.10005   26.668133 156.41757 ]\n",
      "[167.18042     4.4387326 155.00829  ]\n",
      "[161.77673    8.155343 165.96024 ]\n",
      "[176.31168  15.28251 175.84985]\n",
      "[167.86525   13.787423 142.2719  ]\n",
      "[189.63516   47.497566  87.19655 ]\n",
      "[201.41112   41.087883  94.75552 ]\n",
      "[193.87358   37.436844  98.8269  ]\n",
      "[198.70192  47.60973  83.31452]\n",
      "[204.63606   49.5839    82.091385]\n",
      "[203.04759   59.41087   96.225685]\n",
      "[-2.7702136 23.215849  82.09315  ]\n",
      "[211.4581   80.25209  91.98188]\n",
      "Ep:3| rew:94.6| eps:0.21| loss:1263.2747\n",
      "[204.82643  50.97742  77.93737]\n",
      "[200.3048    57.798588  92.97624 ]\n",
      "[206.72585  63.85732  71.64858]\n",
      "[212.05942   55.729046  82.220665]\n",
      "[199.56395   41.81413   93.000114]\n",
      "[198.63988  50.25613  77.51064]\n",
      "[192.76295   40.668423  95.10198 ]\n",
      "[195.25844   41.909653  96.70205 ]\n",
      "[192.46802  44.63397 101.37538]\n",
      "[207.03664  51.96284 110.57355]\n",
      "[192.49214   44.724747 101.24012 ]\n",
      "[200.74599   86.280495 161.52179 ]\n",
      "[254.30934  97.22798 137.72232]\n",
      "[190.86368  44.75351 100.53703]\n",
      "[210.70245  67.59538 102.40314]\n",
      "[218.09248   86.340096  93.67195 ]\n",
      "[219.50009   77.407036  96.81047 ]\n",
      "[205.02211  57.90733 118.61192]\n",
      "[206.68004  58.65044 122.98028]\n",
      "[205.70071   57.399883 123.038185]\n",
      "[192.5908    48.005566  81.44325 ]\n",
      "[200.52803  51.688    77.69502]\n",
      "[196.02315   41.702877  93.96883 ]\n",
      "[188.50854  44.49986 102.01802]\n",
      "[202.6743    56.701653 118.79345 ]\n",
      "[202.99536  52.28789 111.93315]\n",
      "[189.79814   45.606663 103.493835]\n",
      "[203.00113  52.29483 111.88288]\n",
      "[183.0475   76.77087 150.77394]\n",
      "[ 11.554048  77.188545 107.666466]\n",
      "[247.81384 115.37118 169.05315]\n",
      "[233.94283  82.97874 133.19882]\n",
      "[187.86945   45.281822 105.403854]\n",
      "[185.39615   27.326593 169.78915 ]\n",
      "[163.96841   13.624856 199.0361  ]\n",
      "[187.65468   64.152275 120.884445]\n",
      "[208.04248  59.68793 115.06744]\n",
      "[196.61122   47.355137 138.3805  ]\n",
      "[185.5909    35.819553 159.43465 ]\n",
      "[173.04951   24.895218 183.74954 ]\n",
      "[167.99234   24.100044 187.27957 ]\n",
      "[167.99696   24.106777 187.24478 ]\n",
      "[167.61029   28.975777 195.25522 ]\n",
      "[182.08595   36.131706 205.33371 ]\n",
      "[182.08595   36.131706 205.33371 ]\n",
      "[167.99234   24.100044 187.27957 ]\n",
      "[167.61029   28.975777 195.25522 ]\n",
      "[185.83986   51.738827 201.83287 ]\n",
      "[193.08469  56.45487 190.79436]\n",
      "[198.77235   64.141136 177.34929 ]\n",
      "[39.54183 85.78981 88.40987]\n",
      "[197.39458   39.773815 204.97148 ]\n",
      "[174.97229  40.75231 221.90945]\n",
      "[202.67036  82.34892 152.34544]\n",
      "[221.50836  97.47659 140.88742]\n",
      "[40.92707 85.4086  93.05284]\n",
      "[218.99559  99.61725 142.70042]\n",
      "[219.43918  102.634155 145.31857 ]\n",
      "[223.1151   102.714386 143.07161 ]\n",
      "[219.71973 102.58366 145.27913]\n",
      "[227.05669  83.29698 113.31597]\n",
      "[39.085857 82.45445  87.96947 ]\n",
      "[216.6754   103.416336 147.19127 ]\n",
      "[219.53864 105.91724 148.46071]\n",
      "[219.63715  106.024185 148.3158  ]\n",
      "[215.85646  89.73538 155.23128]\n",
      "[214.68575 101.01698 151.62364]\n",
      "[219.65366  106.011185 148.33052 ]\n",
      "[215.87285  89.72232 155.2458 ]\n",
      "[214.7022  101.00401 151.63838]\n",
      "[219.67012 105.99826 148.34512]\n",
      "[215.88927  89.70932 155.26056]\n",
      "[213.83818 101.60824 151.05777]\n",
      "[218.84193 106.56027 147.76956]\n",
      "[214.99658  90.29563 154.70592]\n",
      "[207.71329   97.105675 175.97256 ]\n",
      "[227.76375 126.48858 175.71748]\n",
      "[232.76733 131.44058 172.42934]\n",
      "[228.92209 115.17599 179.36546]\n",
      "[227.78012 126.47561 175.7322 ]\n",
      "[232.78375 131.42747 172.4439 ]\n",
      "[228.93846 115.16294 179.3802 ]\n",
      "[232.95602 131.98634 169.50093]\n",
      "[237.78749 106.11015 130.11684]\n",
      "[198.10153   62.164486 124.17211 ]\n",
      "[197.29955  72.3684  118.87131]\n",
      "[202.1287   77.28701 115.61755]\n",
      "[202.211     77.369896 115.504875]\n",
      "[198.0166    62.194847 124.014435]\n",
      "[29.135729 50.523945 87.71625 ]\n",
      "[203.37492  78.31514 112.45867]\n",
      "[25.935774 36.912663 90.78014 ]\n",
      "[200.60318   77.428635 119.67512 ]\n",
      "[205.64748  82.30079 116.43396]\n",
      "[201.47412  66.91879 124.61542]\n",
      "[200.61954  77.41557 119.68968]\n",
      "[205.6638   82.28773 116.44868]\n",
      "[201.48842   66.913864 124.641594]\n",
      "[200.63597   77.40272  119.704216]\n",
      "[201.6034   78.63195 116.19203]\n",
      "[206.67389  83.46627 112.96681]\n",
      "[202.26678  68.83119 122.22981]\n",
      "[196.50845  66.13736 128.53789]\n",
      "[199.38069   74.6677   112.070694]\n",
      "[23.945301 44.005642 74.09715 ]\n",
      "[199.45102   65.62188  119.301796]\n",
      "[24.573488 44.982933 71.75715 ]\n",
      "[198.234     66.35003  118.106834]\n",
      "[197.72144  75.65218 111.29933]\n",
      "[202.82948   80.446045 108.10028 ]\n",
      "[198.24846  66.34507 118.13304]\n",
      "[202.84593   80.43328  108.114746]\n",
      "[198.26266   66.340034 118.15927 ]\n",
      "[197.75746  75.63227 111.31137]\n",
      "[26.040232 34.16597  84.98819 ]\n",
      "[32.28109 53.91371 81.51749]\n",
      "[201.84145   81.02207  107.396385]\n",
      "[201.90735  81.08059 107.31596]\n",
      "[197.25725   67.12634  117.554565]\n",
      "[191.44698  65.34596 125.12121]\n",
      "[196.79497   76.361496 110.39434 ]\n",
      "[201.93318  81.10426 107.244  ]\n",
      "[196.9712   67.72268 115.04758]\n",
      "[196.55164   76.78126  107.612656]\n",
      "[201.70679  81.46429 104.54854]\n",
      "[196.98558  67.71763 115.07389]\n",
      "[196.56966   76.77132  107.618385]\n",
      "[201.72299   81.45141  104.562874]\n",
      "[33.70201 45.57324 91.96233]\n",
      "[199.99724   71.55202  118.700935]\n",
      "[200.90706   82.69021  109.084465]\n",
      "[37.084827 62.497658 76.496315]\n",
      "[11.700566 23.357796 84.57038 ]\n",
      "[188.4402    86.9838   113.756615]\n",
      "[220.53384  112.736275 130.89996 ]\n",
      "[220.53384  112.736275 130.89996 ]\n",
      "[222.40375   98.421196 109.247696]\n",
      "[206.58894  95.6481   95.61626]\n",
      "[212.01619  99.88001  90.5916 ]\n",
      "[208.50046   86.86395   96.231674]\n",
      "[204.53311  83.11072  98.72004]\n",
      "[204.45898  83.00381  98.86074]\n",
      "[203.02003  95.07504 117.07997]\n",
      "[218.37236 105.32149 125.10723]\n",
      "[218.2014  107.494   124.37544]\n",
      "[214.55411  91.00464 131.31836]\n",
      "[207.49055  86.16101 140.83481]\n",
      "[46.02243 82.80704 74.38348]\n",
      "[224.07869 123.12538 115.08579]\n",
      "[227.59402 152.66618 148.0856 ]\n",
      "[262.5379  155.06891 125.23905]\n",
      "[225.98672 112.64817 118.35038]\n",
      "[225.03471 123.95644 114.55927]\n",
      "[221.81416  96.56167 125.32251]\n",
      "[205.45813   79.567825 151.13098 ]\n",
      "[199.72162  72.75153 150.54716]\n",
      "[184.68033  58.79676 137.0865 ]\n",
      "[ 60.88225   65.432945 111.4678  ]\n",
      "[ 60.875725  65.417946 111.467445]\n",
      "[183.77322  57.71178 137.35349]\n",
      "[183.78468  56.18147 134.81416]\n",
      "[190.92908   72.41874   95.368324]\n",
      "[199.90416  83.10519 102.64395]\n",
      "[213.1952   90.08036 102.66148]\n",
      "[208.83965   78.065834  88.19001 ]\n",
      "[196.36996   64.146225  76.59188 ]\n",
      "[196.11522  64.71104  77.13334]\n",
      "[195.76405  64.38819  76.63564]\n",
      "[195.76405  64.38819  76.63564]\n",
      "[195.76405  64.38819  76.63564]\n",
      "[195.949     63.772488  75.72017 ]\n",
      "[194.27673   62.227352  73.587875]\n",
      "[194.27673   62.227352  73.587875]\n",
      "[195.40186   62.471848  73.76857 ]\n",
      "[194.27016   60.551704  76.93209 ]\n",
      "[190.92282  66.317    85.68863]\n",
      "[205.14934  71.91932  89.96564]\n",
      "[193.78146   62.055252  73.568184]\n",
      "[195.39601   62.405487  73.78314 ]\n",
      "[195.25793   62.332237  73.719765]\n",
      "[183.45096  42.2828  106.84617]\n",
      "[196.07027  61.55689  73.95791]\n",
      "[193.99475   69.16907   85.135994]\n",
      "[207.86284  73.04304  85.63378]\n",
      "[196.05785   61.542072  74.01112 ]\n",
      "[196.05785   61.542072  74.01112 ]\n",
      "[196.05785   61.542072  74.01112 ]\n",
      "[196.05785   61.542072  74.01112 ]\n",
      "[197.30988   64.394005  69.74942 ]\n",
      "[199.82698   67.964905  68.36287 ]\n",
      "[202.09204   71.79717   72.541534]\n",
      "[205.52306  73.0478   75.87481]\n",
      "[191.44795   45.907032 114.23916 ]\n",
      "[176.0089    42.487614 116.112854]\n",
      "[172.16196   44.110035 119.289536]\n",
      "[185.98756  56.08967 137.49724]\n",
      "[186.02039   51.085224 129.1204  ]\n",
      "[172.05142  44.07735 118.98032]\n",
      "[185.07402   54.339016 140.92003 ]\n",
      "[196.37383  75.91751 104.3549 ]\n",
      "[207.47168  78.27367  94.80844]\n",
      "[205.72102  88.39267 112.23899]\n",
      "[221.90099 101.6309  119.43612]\n",
      "[222.47873   90.928986 102.78673 ]\n",
      "[210.09943  89.07478  87.85132]\n",
      "[230.49875 105.91617  92.61458]\n",
      "[213.54787 104.79574 104.19954]\n",
      "[231.32202  94.76439  75.37738]\n",
      "[203.91406   72.476875  68.33571 ]\n",
      "[203.91406   72.476875  68.33571 ]\n",
      "[200.79707   92.94836   98.204765]\n",
      "[230.9645    95.030716  77.34335 ]\n",
      "[207.3087   74.58418  71.4391 ]\n",
      "[203.89745   63.162933  79.04414 ]\n",
      "[197.0521    61.778313  78.25231 ]\n",
      "[197.91109   62.46138   79.180725]\n",
      "[197.88524   62.311943  79.10263 ]\n",
      "[185.8775  191.36671 271.079  ]\n",
      "[ 90.87336 291.07877 171.74019]\n",
      "[206.40416   75.109886  93.50195 ]\n",
      "[206.33104   74.568924  94.18267 ]\n",
      "[209.94963  85.73555  87.35726]\n",
      "[210.57362   73.352356  97.22954 ]\n",
      "[201.95682  71.41668 103.1671 ]\n",
      "[204.54918   74.828064 106.42405 ]\n",
      "[212.50644  91.2917   97.73299]\n",
      "[220.88751  83.92188  77.72433]\n",
      "[205.61482  71.96985  73.2505 ]\n",
      "[208.47865   71.62103   72.641045]\n",
      "[205.28223  70.29097  71.33494]\n",
      "[203.94395   80.14076   85.475105]\n",
      "[215.68217   92.6676    93.415504]\n",
      "[218.81882   97.359535  92.70037 ]\n",
      "[219.16681   95.127396  94.30102 ]\n",
      "[220.239    83.11221  78.33527]\n",
      "[204.63208   68.497635  70.32946 ]\n",
      "[205.76695  72.01954  69.19213]\n",
      "[206.63188  69.75764  71.71049]\n",
      "[205.15385  68.79056  70.46304]\n",
      "[205.69354   71.83081   69.324326]\n",
      "[206.79277  71.76488  68.0889 ]\n",
      "[206.26915   68.923294  69.464165]\n",
      "[203.97667  76.53013  80.18173]\n",
      "[213.72847  86.79543  87.79589]\n",
      "[216.62398   91.622185  86.79793 ]\n",
      "[217.63914   94.824326  90.025375]\n",
      "[222.63493   86.1252    74.599396]\n",
      "[186.88153  33.52998 133.48512]\n",
      "[161.50171  28.95029 139.49135]\n",
      "[157.77313   24.791912 139.15535 ]\n",
      "[155.6186    24.399529 137.80968 ]\n",
      "[155.4983    24.744019 138.38515 ]\n",
      "[179.98924   66.932365  68.0145  ]\n",
      "[206.94441  71.55749  66.58362]\n",
      "[183.42352  28.75013 133.70116]\n",
      "[156.22148   29.117332 145.82887 ]\n",
      "[167.47903  34.76754 154.03773]\n",
      "[156.28735   30.954678 149.02391 ]\n",
      "[196.01825  86.20931  99.06901]\n",
      "[219.40605   98.614815  91.59256 ]\n",
      "[219.83351   98.827354  90.081474]\n",
      "[195.67865   51.102844 148.78708 ]\n",
      "[171.50241  39.90922 162.20367]\n",
      "[153.27771   30.740335 149.1106  ]\n",
      "[171.84694   49.145203 178.2536  ]\n",
      "[ 68.65899  71.12031 140.24013]\n",
      "[198.43956  88.245   129.07397]\n",
      "[216.14888   93.05109  107.832756]\n",
      "[216.06393  87.85963  99.33454]\n",
      "[205.3811    75.853905  92.4445  ]\n",
      "[201.01031  73.97639  90.97634]\n",
      "[200.97563   73.97061   90.974014]\n",
      "[182.12921  42.51955 142.20609]\n",
      "[164.00658   40.414547 154.98193 ]\n",
      "[165.11203   42.365665 151.5421  ]\n",
      "[181.55008   69.66374  102.650955]\n",
      "[198.06303  71.45174  94.7514 ]\n",
      "[187.45665   53.749187 123.59117 ]\n",
      "[187.4802    71.539986  95.530914]\n",
      "[189.18471   54.33694  122.939255]\n",
      "[173.4311    52.093998 129.88559 ]\n",
      "[173.59001   52.287655 129.50409 ]\n",
      "[173.79715  52.48029 129.08585]\n",
      "[174.00432   52.672745 128.66776 ]\n",
      "[174.21143  52.86549 128.24948]\n",
      "[174.622    63.08383 146.02466]\n",
      "[215.14412 108.81772 141.38626]\n",
      "[225.58388 116.73769 132.0003 ]\n",
      "[230.52228 130.92342 125.57238]\n",
      "[234.88028 134.47377 123.1961 ]\n",
      "[ 63.898746 103.3519   108.70324 ]\n",
      "[211.61531 108.94229 139.46664]\n",
      "[222.50635 115.53498 130.52736]\n",
      "[222.70949 115.61204 130.41034]\n",
      "[222.51486  115.547134 130.51196 ]\n",
      "[ 63.925488 119.89671   88.20495 ]\n",
      "[222.98886 115.43557 130.18619]\n",
      "[222.79437 115.37064 130.28775]\n",
      "[223.08456 127.12761 123.72636]\n",
      "[223.57018  117.773705 127.0713  ]\n",
      "[218.98248  96.14483  99.47729]\n",
      "[186.3492   67.94393  63.7661 ]\n",
      "[192.30177   69.86339   65.548706]\n",
      "[192.47067   69.919525  65.59936 ]\n",
      "[192.08498   68.000595  68.11071 ]\n",
      "[191.07234  69.26387  65.43576]\n",
      "[184.14511  51.36143  93.71059]\n",
      "[167.77383  46.39597  93.45436]\n",
      "[161.90852   43.422268  95.943726]\n",
      "[168.55615  56.49838  73.10804]\n",
      "[177.38611  68.14103  90.08912]\n",
      "[191.67453   76.19261  126.202065]\n",
      "[195.84369  95.2974   99.96159]\n",
      "[212.44318  95.10722  81.12879]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[199.69801  84.76022  80.01086]\n",
      "[200.02773  95.78178  93.71998]\n",
      "[209.72586  106.67634   98.418144]\n",
      "[211.24452 110.5689  101.92222]\n",
      "[214.53699  95.0194   75.87477]\n",
      "[183.31158  87.11031  91.50206]\n",
      "[214.49713   95.151085  76.07591 ]\n",
      "[177.90514   49.665344  91.7904  ]\n",
      "[168.27293  56.1286   72.20643]\n",
      "[176.84245  57.97332  73.86507]\n",
      "[171.75189  77.57105 104.27914]\n",
      "[210.7619   97.57732 102.46556]\n",
      "[189.87378  78.59395  77.3098 ]\n",
      "[196.65532  82.94585  77.22856]\n",
      "[191.25282 106.08508 107.02905]\n",
      "[217.95203  132.0752   118.604416]\n",
      "[220.95088  135.1952   121.007324]\n",
      "[223.09756 114.12871  86.97247]\n",
      "[199.68748  85.3475   73.04028]\n",
      "[179.80403   56.69374  105.267166]\n",
      "[162.02284   53.38201  103.635414]\n",
      "[164.5341    55.555283 100.72386 ]\n",
      "[167.0382    53.136635  96.6435  ]\n",
      "[169.7631    64.48771   56.428696]\n",
      "[179.20844   66.55022   60.493378]\n",
      "[175.99446   94.06163  100.101974]\n",
      "[213.51859  129.87625  115.465706]\n",
      "[216.2572  132.07767 117.05019]\n",
      "[216.14604  133.89877  119.906395]\n",
      "[222.13391 108.44308  78.12234]\n",
      "[178.47076  66.05766  60.15159]\n",
      "[178.95087   66.22058   60.472633]\n",
      "[174.82619   95.56893  102.828896]\n",
      "[216.18628 132.68578 117.96882]\n",
      "[211.44443 130.88446 116.75345]\n",
      "[216.50522 105.38927  77.16409]\n",
      "[174.21477   65.056114  60.65602 ]\n",
      "[174.5788    58.497707  74.78129 ]\n",
      "[167.58595   56.3448    72.190605]\n",
      "[164.58269  52.71275  72.93716]\n",
      "[162.70692   53.061596  73.75715 ]\n",
      "[164.56467   54.81361   76.193344]\n",
      "[170.31648  66.62139  57.68612]\n",
      "[180.42546   73.031845  65.61824 ]\n",
      "Ep:4| rew:35.8| eps:0.01| loss:859.5931\n"
     ]
    }
   ],
   "source": [
    "# Warming up the agent\n",
    "for _ in range(memory_size):\n",
    "        action = agent.act(state)\n",
    "        next_state, reward, done, _ = environment.step(action)\n",
    "        agent.observe(state, action, reward, next_state, done, warming_up=True)\n",
    "        \n",
    "rews = []\n",
    "losses = []\n",
    "epsilons = []\n",
    "# Training the agent\n",
    "for ep in range(episodes):\n",
    "    state = environment.reset()\n",
    "    rew = 0\n",
    "    for _ in range(episode_length):\n",
    "        action = agent.act(state)\n",
    "        \n",
    "        for position in environment._positions:\n",
    "          if all(environment._position==environment._positions[position]):\n",
    "            position_name = position\n",
    "        \n",
    "    \n",
    "        for _action in environment._actions:\n",
    "          if all(action==environment._actions[_action]):\n",
    "            action_name = _action\n",
    "        \n",
    "        next_state, reward, done, _ = environment.step(action)\n",
    "        \n",
    "        for position in environment._positions:\n",
    "          if all(environment._position==environment._positions[position]):\n",
    "            next_position_name = position\n",
    "        \n",
    "        \n",
    "           \n",
    "        #print position_name, action_name, next_position_name\n",
    "        loss = agent.observe(state, action, reward, next_state, done)\n",
    "        state = next_state\n",
    "        rew += reward\n",
    "    print(\"Ep:\" + str(ep)\n",
    "           + \"| rew:\" + str(round(rew, 2))\n",
    "           + \"| eps:\" + str(round(agent.epsilon, 2))\n",
    "           + \"| loss:\" + str(round(loss.history[\"loss\"][0], 4)))\n",
    "    rews.append(rew)\n",
    "    epsilons.append(agent.epsilon)\n",
    "    losses.append(loss.history[\"loss\"][0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(epsilons)\n",
    "plt.xlabel('episodes')\n",
    "plt.ylabel('eps')\n",
    "plt.savefig('epsilons.jpg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(rews)\n",
    "plt.xlabel('episodes')\n",
    "plt.ylabel('rewards')\n",
    "plt.savefig('rewards.jpg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[20.81069  75.89479  79.476746]\n",
      "flat sell short\n",
      "[192.71753  106.13866  118.627106]\n",
      "short hold short\n",
      "[194.92357  95.1293   98.77579]\n",
      "short hold short\n",
      "[167.19397  83.26781 109.89962]\n",
      "short hold short\n",
      "[193.84074 106.91522 118.10751]\n",
      "short hold short\n",
      "[194.94403   95.113914  98.81683 ]\n",
      "short hold short\n",
      "[165.08765   59.310696 104.55839 ]\n",
      "short hold short\n",
      "[156.48079   55.810658 105.860115]\n",
      "short hold short\n",
      "[154.02504  54.56989 104.18098]\n",
      "short hold short\n",
      "[156.48079   55.810658 105.860115]\n",
      "short hold short\n",
      "[154.02504  54.56989 104.18098]\n",
      "short hold short\n",
      "[154.69577   60.89822  114.207115]\n",
      "short hold short\n",
      "[168.14651   76.003494 116.886086]\n",
      "short hold short\n",
      "[174.38722   84.181526 102.88573 ]\n",
      "short hold short\n",
      "[181.52422  86.42606 100.33677]\n",
      "short hold short\n",
      "[181.52422  86.42606 100.33677]\n",
      "short hold short\n",
      "[181.52422  86.42606 100.33677]\n",
      "short hold short\n",
      "[181.52422  86.42606 100.33677]\n",
      "short hold short\n",
      "[181.52422  86.42606 100.33677]\n",
      "short hold short\n",
      "[182.06625   87.304474  98.88487 ]\n",
      "short hold short\n",
      "[182.27321   86.66803  100.050186]\n",
      "short hold short\n",
      "[183.25185  81.20543  92.49652]\n",
      "short hold short\n",
      "[173.71762  73.51787  73.64316]\n",
      "short hold short\n",
      "[180.97012  75.81481  71.03125]\n",
      "short hold short\n",
      "[178.62483  85.32105  85.4355 ]\n",
      "short hold short\n",
      "[190.90445  96.53618  87.97102]\n",
      "short hold short\n",
      "[190.82782   96.515366  88.05179 ]\n",
      "short hold short\n",
      "[190.83029  96.5535   88.00691]\n",
      "short hold short\n",
      "[168.29796   55.963955 144.46191 ]\n",
      "short hold short\n",
      "[140.92664   49.934345 167.09619 ]\n",
      "short hold short\n",
      "[143.57713  52.49279 168.90076]\n",
      "short hold short\n",
      "[143.67574  46.48399 158.76254]\n",
      "short hold short\n",
      "[127.17354   42.912197 157.35742 ]\n",
      "short hold short\n",
      "[158.98866  77.7416  197.03073]\n",
      "short hold short\n",
      "[194.17514 127.76248 149.68716]\n",
      "short hold short\n",
      "[198.43103 101.88824 171.5823 ]\n",
      "short hold short\n",
      "[183.35043 102.89125 186.53233]\n",
      "short hold short\n",
      "[189.02893  108.598946 173.89363 ]\n",
      "short hold short\n",
      "[197.78256 118.68438 152.9279 ]\n",
      "short hold short\n",
      "[203.72673 114.65977 136.6969 ]\n",
      "short hold short\n",
      "[188.10199 100.56727 127.88661]\n",
      "short hold short\n",
      "[185.53506  93.94277 146.71156]\n",
      "short hold short\n",
      "[179.69481  91.88245 152.56296]\n",
      "short hold short\n",
      "[184.75154 102.77617 126.16213]\n",
      "short hold short\n",
      "short buy flat\n",
      "[ 65.31699 121.63103  91.06973]\n",
      "flat buy long\n",
      "[193.82921  99.20619 106.29849]\n",
      "long hold long\n",
      "[182.88814   81.570625  93.678185]\n",
      "long hold long\n",
      "[175.08316  75.36332  77.18204]\n",
      "long hold long\n",
      "[181.60376  76.62405  73.74777]\n",
      "long hold long\n",
      "[179.84253  73.6292   71.65546]\n",
      "long hold long\n",
      "[177.41205  72.10863  71.99614]\n",
      "long hold long\n",
      "[180.41835  75.93305  70.71658]\n",
      "long hold long\n",
      "[176.66566   68.190025  83.71477 ]\n",
      "long hold long\n",
      "[169.46211   65.020676  85.09412 ]\n",
      "long hold long\n",
      "[166.07288   60.790325  86.69846 ]\n",
      "long hold long\n",
      "[165.575     62.33256   83.191315]\n",
      "long hold long\n",
      "[166.93793   63.481777  84.846054]\n",
      "long hold long\n",
      "[162.95316   89.81951  122.695724]\n",
      "long hold long\n",
      "[210.53021 140.38057 134.10231]\n",
      "long hold long\n",
      "[215.23798 143.8989  131.74304]\n",
      "long hold long\n",
      "[210.05075 128.09962 138.78255]\n",
      "long hold long\n",
      "[204.26262 126.23143 145.26886]\n",
      "long hold long\n",
      "[208.0815  131.26724 145.56723]\n",
      "long hold long\n",
      "[208.92622 133.86969 148.22568]\n",
      "long hold long\n",
      "[210.39262 152.59258 166.23799]\n",
      "long hold long\n",
      "[226.1462  156.39114 152.79454]\n",
      "long hold long\n",
      "[211.50676 134.0391  146.32774]\n",
      "long hold long\n",
      "[208.92622 133.86969 148.22568]\n",
      "long hold long\n",
      "[210.39262 152.59258 166.23799]\n",
      "long hold long\n",
      "[224.64336 176.34753 167.67172]\n",
      "long hold long\n",
      "long sell flat\n",
      "[109.84273 224.9608  116.57327]\n",
      "flat buy long\n",
      "[232.38051 196.04292 157.3034 ]\n",
      "long hold long\n",
      "[229.30408 180.3194  164.60558]\n",
      "long hold long\n",
      "[223.8669  173.5765  168.42711]\n",
      "long hold long\n",
      "[225.9758  120.12888 114.77629]\n",
      "long hold long\n",
      "[157.88829   51.616795  72.046265]\n",
      "long hold long\n",
      "[158.90921   51.790775  78.2432  ]\n",
      "long hold long\n",
      "[157.50131   50.769787  76.79894 ]\n",
      "long hold long\n",
      "[155.24942   48.348484  75.43603 ]\n",
      "long hold long\n",
      "[155.06602   48.916714  74.14399 ]\n",
      "long hold long\n",
      "[154.4594   52.50082  79.91894]\n",
      "long hold long\n",
      "[164.90364   57.768406  87.23468 ]\n",
      "long hold long\n",
      "[154.45848   52.502956  79.93789 ]\n",
      "long hold long\n",
      "[163.42258   62.062138  94.143456]\n",
      "long hold long\n",
      "[167.1744   60.19367  88.4435 ]\n",
      "long hold long\n",
      "[154.45296  52.49513  79.95841]\n",
      "long hold long\n",
      "long sell flat\n",
      "[ 6.7866163 17.734636  61.81455  ]\n",
      "flat sell short\n",
      "[163.20009   62.055103  94.07497 ]\n",
      "short hold short\n",
      "[166.9532    60.192738  88.34594 ]\n",
      "short hold short\n",
      "[154.22101   52.449764  80.08362 ]\n",
      "short hold short\n",
      "[164.6846    57.735317  87.28747 ]\n",
      "short hold short\n",
      "[154.22694   52.456936  80.056816]\n",
      "short hold short\n",
      "[163.20009   62.055103  94.07497 ]\n",
      "short hold short\n",
      "[166.9532    60.192738  88.34594 ]\n",
      "short hold short\n",
      "[154.22101   52.449764  80.08362 ]\n",
      "short hold short\n",
      "[164.62048   63.076954  89.76653 ]\n",
      "short hold short\n",
      "short buy flat\n",
      "[23.989162 34.205082 57.247746]\n",
      "flat sell short\n",
      "[157.0221    54.657734  77.22826 ]\n",
      "short hold short\n",
      "[167.51863   60.085995  83.73647 ]\n",
      "short hold short\n",
      "[156.73663  55.47064  78.56739]\n",
      "short hold short\n",
      "[169.79176   62.564625  84.70255 ]\n",
      "short hold short\n",
      "[157.0221    54.657734  77.22826 ]\n",
      "short hold short\n",
      "[165.17033   61.740566  92.25306 ]\n",
      "short hold short\n",
      "[164.68758   57.727085  87.29536 ]\n",
      "short hold short\n",
      "[153.94472  53.26167  81.40362]\n",
      "short hold short\n",
      "[165.75838   63.703785  93.771675]\n",
      "short hold short\n",
      "[164.69826   57.743275  87.26096 ]\n",
      "short hold short\n",
      "[154.25983   52.482883  79.918564]\n",
      "short hold short\n",
      "[163.22086   62.069805  93.9951  ]\n",
      "short hold short\n",
      "[166.97412  60.20743  88.26601]\n",
      "short hold short\n",
      "short buy flat\n",
      "[20.829088 39.604176 58.394413]\n",
      "flat sell short\n",
      "[166.9532    60.192738  88.34594 ]\n",
      "short hold short\n",
      "[154.22101   52.449764  80.08362 ]\n",
      "short hold short\n",
      "[164.62048   63.076954  89.76653 ]\n",
      "short hold short\n",
      "[166.0299   64.4291   90.44625]\n",
      "short hold short\n",
      "[169.78314   62.566685  84.71716 ]\n",
      "short hold short\n",
      "[157.0131    54.658894  77.246994]\n",
      "short hold short\n",
      "[172.32904   73.355896  73.07042 ]\n",
      "short hold short\n",
      "[180.92769   77.099014  71.412704]\n",
      "short hold short\n",
      "[184.70331   75.09723   65.479095]\n",
      "short hold short\n",
      "[170.72614   66.73938   63.539455]\n",
      "short hold short\n",
      "[182.09222  72.64341  64.82785]\n",
      "short hold short\n",
      "[170.72978   66.741035  63.54424 ]\n",
      "short hold short\n",
      "[182.09499   72.652084  64.79813 ]\n",
      "short hold short\n",
      "[170.73486  66.75247  63.52377]\n",
      "short hold short\n",
      "[176.20775  67.94336  83.48598]\n",
      "short hold short\n",
      "[169.91875   62.078884  80.70883 ]\n",
      "short hold short\n",
      "[159.3911    56.513447  74.849976]\n",
      "short hold short\n",
      "[169.96185  61.97952  80.43863]\n",
      "short hold short\n",
      "[159.0977    56.241444  74.1163  ]\n",
      "short hold short\n",
      "[169.92174   62.104923  80.641335]\n",
      "short hold short\n",
      "[159.42723  56.55405  74.67082]\n",
      "short hold short\n",
      "[169.93289   62.112965  80.59859 ]\n",
      "short hold short\n",
      "[159.42696   56.554806  74.67728 ]\n",
      "short hold short\n",
      "[168.45085  66.43681  87.33858]\n",
      "short hold short\n",
      "[172.20409  64.57432  81.60947]\n",
      "short hold short\n",
      "[159.40244   56.528187  74.80282 ]\n",
      "short hold short\n",
      "[168.44466  66.42828  87.3714 ]\n",
      "short hold short\n",
      "[172.19781   64.56592   81.642296]\n",
      "short hold short\n",
      "[159.39673   56.521183  74.829605]\n",
      "short hold short\n",
      "[169.92537   62.091564  80.66493 ]\n",
      "short hold short\n",
      "[159.1174    57.34138   76.141846]\n",
      "short hold short\n",
      "[172.20409  64.57432  81.60947]\n",
      "short hold short\n",
      "[159.40323   56.526936  74.79029 ]\n",
      "short hold short\n",
      "[169.9191    62.083233  80.69763 ]\n",
      "short hold short\n",
      "[159.11133   57.334126  76.16868 ]\n",
      "short hold short\n",
      "[172.19781   64.56592   81.642296]\n",
      "short hold short\n",
      "[159.39673   56.521183  74.829605]\n",
      "short hold short\n",
      "[169.92488   62.087208  80.676125]\n",
      "short hold short\n",
      "[159.11133   57.334126  76.16868 ]\n",
      "short hold short\n",
      "[170.99435  68.07901  87.08264]\n",
      "short hold short\n",
      "[169.93108  62.09564  80.64347]\n",
      "short hold short\n",
      "[159.40323   56.526936  74.79029 ]\n",
      "short hold short\n",
      "[169.9191    62.083233  80.69763 ]\n",
      "short hold short\n",
      "[159.11133   57.334126  76.16868 ]\n",
      "short hold short\n",
      "[170.99435  68.07901  87.08264]\n",
      "short hold short\n",
      "[169.93108  62.09564  80.64347]\n",
      "short hold short\n",
      "[159.40323   56.526936  74.79029 ]\n",
      "short hold short\n",
      "[169.9191    62.083233  80.69763 ]\n",
      "short hold short\n",
      "[159.11133   57.334126  76.16868 ]\n",
      "short hold short\n",
      "[170.99435  68.07901  87.08264]\n",
      "short hold short\n",
      "[169.93108  62.09564  80.64347]\n",
      "short hold short\n",
      "[159.40323   56.526936  74.79029 ]\n",
      "short hold short\n",
      "[169.9191    62.083233  80.69763 ]\n",
      "short hold short\n",
      "[159.11133   57.334126  76.16868 ]\n",
      "short hold short\n",
      "[172.19781   64.56592   81.642296]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "short hold short\n",
      "[159.39769   56.519123  74.8107  ]\n",
      "short hold short\n",
      "[169.90778   62.075207  80.7403  ]\n",
      "short hold short\n",
      "[159.39745   56.519802  74.816895]\n",
      "short hold short\n",
      "[169.91354   62.079136  80.718864]\n",
      "short hold short\n",
      "[160.61116   53.059734  69.16075 ]\n",
      "short hold short\n",
      "[160.66156  52.93932  68.92976]\n",
      "short hold short\n",
      "[160.32985   52.630665  68.41347 ]\n",
      "short hold short\n",
      "[159.2046    50.777317  71.46637 ]\n",
      "short hold short\n",
      "[157.51126   50.569332  71.361046]\n",
      "short hold short\n",
      "[157.86023  50.89989  71.80371]\n",
      "short hold short\n",
      "[157.86023  50.89989  71.80371]\n",
      "short hold short\n",
      "[156.6455    54.362057  77.47898 ]\n",
      "short hold short\n",
      "[165.65178  64.10455  90.80412]\n",
      "short hold short\n",
      "[167.91911  66.57927  91.79151]\n",
      "short hold short\n",
      "[169.53069   61.782368  84.65055 ]\n",
      "short hold short\n",
      "[155.22704  54.09242  77.94614]\n",
      "short hold short\n",
      "[173.94225  76.33833  75.65941]\n",
      "short hold short\n",
      "[178.019     71.221375  85.59218 ]\n",
      "short hold short\n",
      "[169.64156  67.08432  91.25675]\n",
      "short hold short\n",
      "[168.2316   65.72784  90.58817]\n",
      "short hold short\n",
      "[165.67628  64.07303  90.89839]\n",
      "short hold short\n",
      "[169.08804   68.40207   88.820724]\n",
      "short hold short\n",
      "[169.63544   67.07606   91.289406]\n",
      "short hold short\n",
      "[166.97989  64.98643  94.46699]\n",
      "short hold short\n",
      "[165.8377   63.71758  93.693  ]\n",
      "short hold short\n",
      "[163.28809   62.067028  93.98173 ]\n",
      "short hold short\n",
      "[165.8377   63.71758  93.693  ]\n",
      "short hold short\n",
      "[163.28809   62.067028  93.98173 ]\n",
      "short hold short\n",
      "[171.57864  74.30066  78.837  ]\n",
      "short hold short\n",
      "[176.60164   70.742424  86.18719 ]\n",
      "short hold short\n",
      "[171.08261  68.09083  86.98918]\n",
      "short hold short\n",
      "[167.67082   63.761868  89.06688 ]\n",
      "short hold short\n",
      "[167.12343  65.08785  86.5982 ]\n",
      "short hold short\n",
      "[168.53299  66.44015  87.27792]\n",
      "short hold short\n",
      "[171.08261  68.09083  86.98918]\n",
      "short hold short\n",
      "short buy flat\n",
      "[20.453474 39.865177 53.333103]\n",
      "flat sell short\n",
      "[168.48102   66.452286  87.36561 ]\n",
      "short hold short\n",
      "[171.0306    68.10289   87.076836]\n",
      "short hold short\n",
      "[167.61885   63.773968  89.15451 ]\n",
      "short hold short\n",
      "[167.07156  65.10007  86.68589]\n",
      "short hold short\n",
      "[168.48102   66.452286  87.36561 ]\n",
      "short hold short\n",
      "[171.0306    68.10289   87.076836]\n",
      "short hold short\n",
      "[167.61885   63.773968  89.15451 ]\n",
      "short hold short\n",
      "[165.92715   63.2459    89.751045]\n",
      "short hold short\n",
      "[165.92715   63.2459    89.751045]\n",
      "short hold short\n",
      "[165.92715   63.2459    89.751045]\n",
      "short hold short\n",
      "[165.64484  64.06997  91.02712]\n",
      "short hold short\n",
      "[168.19452   65.72065   90.738335]\n",
      "short hold short\n",
      "[165.64484  64.06997  91.02712]\n",
      "short hold short\n",
      "[167.91231  66.54468  92.01449]\n",
      "short hold short\n",
      "[168.19452   65.72065   90.738335]\n",
      "short hold short\n",
      "[165.64484  64.06997  91.02712]\n",
      "short hold short\n",
      "[168.19452   65.72065   90.738335]\n",
      "short hold short\n",
      "[165.64484  64.06997  91.02712]\n",
      "short hold short\n",
      "[168.19452   65.72065   90.738335]\n",
      "short hold short\n",
      "[165.64484  64.06997  91.02712]\n",
      "short hold short\n",
      "[168.19452   65.72065   90.738335]\n",
      "short hold short\n",
      "[165.64484  64.06997  91.02712]\n",
      "short hold short\n",
      "[168.19452   65.72065   90.738335]\n",
      "short hold short\n",
      "[167.07156  65.10007  86.68589]\n",
      "short hold short\n",
      "[168.48102   66.452286  87.36561 ]\n",
      "short hold short\n",
      "[171.0306    68.10289   87.076836]\n",
      "short hold short\n",
      "[167.61885   63.773968  89.15451 ]\n",
      "short hold short\n",
      "[167.07156  65.10007  86.68589]\n",
      "short hold short\n",
      "[167.61885   63.773968  89.15451 ]\n",
      "short hold short\n",
      "[167.07156  65.10007  86.68589]\n",
      "short hold short\n",
      "[168.48102   66.452286  87.36561 ]\n",
      "short hold short\n",
      "[170.59984  69.3607   89.02464]\n",
      "short hold short\n",
      "[172.07556  69.83923  88.26825]\n",
      "short hold short\n",
      "[168.66373   65.51018   90.345924]\n",
      "short hold short\n",
      "[168.11636  66.83627  87.87717]\n",
      "short hold short\n",
      "[169.52571  68.18843  88.55703]\n",
      "short hold short\n",
      "[171.57031   71.313774  90.551926]\n",
      "short hold short\n",
      "short hold short\n",
      "[178.79857  82.05335  76.81382]\n",
      "short hold short\n",
      "[187.0433    83.98995   73.127014]\n",
      "short hold short\n",
      "[183.67493  79.39171  74.80989]\n",
      "short hold short\n",
      "[182.20605  78.21296  74.39871]\n",
      "short hold short\n",
      "[180.41595  76.25927  73.61919]\n",
      "short hold short\n",
      "[180.41595  76.25927  73.61919]\n",
      "short hold short\n",
      "[180.54968  75.86887  73.01468]\n",
      "short hold short\n",
      "[180.8128    70.79332   66.502045]\n",
      "short hold short\n",
      "[166.46838   60.44585   59.981853]\n",
      "short hold short\n",
      "[167.89963   63.93275   63.586514]\n",
      "short hold short\n",
      "[180.69963  70.67142  66.41759]\n",
      "short hold short\n",
      "[166.31233   60.093952  59.585667]\n",
      "short hold short\n",
      "[164.82698  59.62424  59.10574]\n",
      "short hold short\n",
      "[167.62071   61.8691    61.387653]\n",
      "short hold short\n",
      "[170.81325   63.295094  62.81927 ]\n",
      "short hold short\n",
      "[167.99254   61.53124   61.012394]\n",
      "short hold short\n",
      "[162.02615  96.38983 112.42522]\n",
      "short hold short\n",
      "[213.64758 143.46446 135.78683]\n",
      "short hold short\n",
      "[216.07841 147.86856 140.68327]\n",
      "short hold short\n",
      "[215.47202 139.10875 147.15134]\n",
      "short hold short\n",
      "short hold short\n",
      "[214.84956 148.73474 143.6972 ]\n",
      "short hold short\n",
      "[216.31187 139.58029 146.85416]\n",
      "short hold short\n",
      "[211.53273 134.0704  146.18953]\n",
      "short hold short\n",
      "[209.10197 129.66643 141.29317]\n",
      "short hold short\n",
      "[206.11877  127.166405 139.85864 ]\n",
      "short hold short\n",
      "[206.03752 129.46506 143.54701]\n",
      "short hold short\n",
      "[213.08482 144.8126  139.24121]\n",
      "short hold short\n",
      "[220.27493  113.70575   81.281204]\n",
      "short hold short\n",
      "[168.60646   63.327213  58.41656 ]\n",
      "short hold short\n",
      "[169.66415   64.283905  59.40099 ]\n",
      "short hold short\n",
      "[172.71982  65.31424  62.62295]\n",
      "short hold short\n",
      "[172.13504   65.463165  61.93423 ]\n",
      "short hold short\n",
      "[169.5572   57.02804  74.11928]\n",
      "short hold short\n",
      "[161.10872  53.64352  75.89451]\n",
      "short hold short\n",
      "[157.96086   57.581608  82.58659 ]\n",
      "short hold short\n",
      "[169.89093  68.53194  92.51392]\n",
      "short hold short\n",
      "[167.34105   66.881256  92.80275 ]\n",
      "short hold short\n",
      "[170.75304   71.210175  90.724945]\n",
      "short hold short\n",
      "[171.30016  69.88417  93.19381]\n",
      "short hold short\n",
      "[170.92708   71.23791   90.738914]\n",
      "short hold short\n",
      "[172.78482  70.96751  89.25917]\n",
      "short hold short\n",
      "[171.15767  68.05961  87.15156]\n",
      "short hold short\n",
      "[168.88931  65.57616  86.1866 ]\n",
      "short hold short\n",
      "[168.87752  65.56379  86.2405 ]\n",
      "short hold short\n",
      "[173.6288   73.4453   73.18507]\n",
      "short hold short\n",
      "[174.86723  66.01082  86.64134]\n",
      "short hold short\n",
      "[165.96358   63.226856  89.79104 ]\n",
      "short hold short\n",
      "[167.10239   65.077065  86.74738 ]\n",
      "short hold short\n",
      "[167.64964   63.750942  89.21606 ]\n",
      "short hold short\n",
      "[167.10239   65.077065  86.74738 ]\n",
      "short hold short\n",
      "[167.64964   63.750942  89.21606 ]\n",
      "short hold short\n",
      "[166.69621  61.01524  86.55548]\n",
      "short hold short\n",
      "[160.15294  57.60348  82.94364]\n",
      "short hold short\n",
      "[167.10239   65.077065  86.74738 ]\n",
      "short hold short\n",
      "[173.62062  73.50173  73.07973]\n",
      "short hold short\n",
      "[174.83046   66.025635  86.61248 ]\n",
      "short hold short\n",
      "[164.4414   67.58297  96.46747]\n",
      "short hold short\n",
      "[177.51973  82.46205  98.59905]\n",
      "short hold short\n",
      "[178.92903  83.8142   99.27881]\n",
      "short hold short\n",
      "[186.32713   98.060974  89.22142 ]\n",
      "short hold short\n",
      "[198.07265  89.15219  68.69168]\n",
      "short hold short\n",
      "[167.24893   54.346165  70.9524  ]\n",
      "short hold short\n",
      "[159.27238   51.081608  71.11628 ]\n",
      "short hold short\n",
      "[156.73456   48.918613  74.03006 ]\n",
      "short hold short\n",
      "[154.8618    49.223003  74.760155]\n",
      "short hold short\n",
      "[156.29059   51.656162  78.47074 ]\n",
      "short hold short\n",
      "[158.70169   53.025394  80.36019 ]\n",
      "short hold short\n",
      "[157.15851   50.484035  76.49134 ]\n",
      "short hold short\n",
      "[154.92705   48.602467  73.76646 ]\n",
      "short hold short\n",
      "[160.56639  61.01955  56.3551 ]\n",
      "short hold short\n",
      "[166.88835   52.991657  73.33245 ]\n",
      "short hold short\n",
      "[161.88617   61.321163  56.994877]\n",
      "short hold short\n",
      "[169.17812   77.534996  79.38107 ]\n",
      "short hold short\n",
      "short hold short\n",
      "[189.55345  96.11858  86.99208]\n",
      "short hold short\n",
      "[190.6718    99.272995  90.31427 ]\n",
      "short hold short\n",
      "[192.9759   101.41071   90.810074]\n",
      "short hold short\n",
      "[192.02238  98.42837  92.18689]\n",
      "short hold short\n",
      "[191.38017  100.34244   90.580246]\n",
      "short hold short\n",
      "[192.02238  98.42837  92.18689]\n",
      "short hold short\n",
      "[191.38017  100.34244   90.580246]\n",
      "short hold short\n",
      "[192.02238  98.42837  92.18689]\n",
      "short hold short\n",
      "[191.38017  100.34244   90.580246]\n",
      "short hold short\n",
      "[192.02238  98.42837  92.18689]\n",
      "short hold short\n",
      "[191.22867  99.86983  90.80043]\n",
      "short hold short\n",
      "[195.04321   91.27882   76.677826]\n",
      "short hold short\n",
      "[180.91846  76.04603  70.067  ]\n",
      "short hold short\n",
      "[180.91107   77.179344  71.40752 ]\n",
      "short hold short\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[182.06209  77.6262   75.20578]\n",
      "short hold short\n",
      "[181.85622  72.7609   69.08551]\n",
      "short hold short\n",
      "[167.34987   60.794353  61.677776]\n",
      "short hold short\n",
      "[165.73659  75.49234  82.57347]\n",
      "short hold short\n",
      "[192.32285   90.14804   80.900955]\n",
      "short hold short\n",
      "[174.36574  67.36404  91.83639]\n",
      "short hold short\n",
      "[167.69238   68.019554  89.33806 ]\n",
      "short hold short\n",
      "[175.80057  77.11416  74.82112]\n",
      "short hold short\n",
      "[183.56728  78.62232  70.92351]\n",
      "short hold short\n",
      "[180.13852   74.281494  73.06531 ]\n",
      "short hold short\n",
      "[179.5912   75.60748  70.59654]\n",
      "short hold short\n",
      "[180.13852   74.281494  73.06531 ]\n",
      "short hold short\n",
      "[179.5912   75.60748  70.59654]\n",
      "short hold short\n",
      "[180.13852   74.281494  73.06531 ]\n",
      "short hold short\n",
      "[179.5912   75.60748  70.59654]\n",
      "short hold short\n",
      "[181.08485   75.840126  70.4827  ]\n",
      "short hold short\n",
      "[174.89539  66.2869   86.19916]\n",
      "short hold short\n",
      "[165.1506   61.78877  92.21281]\n",
      "short hold short\n",
      "[161.97319  65.59776  99.52567]\n",
      "short hold short\n",
      "[175.39288  74.2854   98.00578]\n",
      "short hold short\n",
      "[169.50436  71.11718  76.20889]\n",
      "short hold short\n",
      "[178.10304  74.62343  74.81469]\n",
      "short hold short\n",
      "[180.65112  76.26099  74.55977]\n",
      "short hold short\n",
      "[174.5564   67.4475   84.13086]\n",
      "short hold short\n",
      "[173.58765  73.48022  73.21703]\n",
      "short hold short\n",
      "[180.80797  75.75512  70.62193]\n",
      "short hold short\n",
      "[181.89165   77.52098   67.652725]\n",
      "short hold short\n",
      "[182.35696   76.177605  70.13368 ]\n",
      "short hold short\n",
      "[180.66283  75.6278   70.78633]\n",
      "short hold short\n",
      "[181.779     77.461914  67.82814 ]\n",
      "short hold short\n",
      "[182.91103  77.10887  68.68231]\n",
      "short hold short\n",
      "[181.55746  75.98816  70.39615]\n",
      "short hold short\n",
      "[180.9092   76.03566  70.17262]\n",
      "short hold short\n",
      "[180.04625   74.285675  73.10542 ]\n",
      "short hold short\n",
      "[179.31842   75.319016  71.120636]\n",
      "short hold short\n",
      "[174.66756  65.99634  86.74638]\n",
      "short hold short\n",
      "[171.80875   73.00716   73.695496]\n",
      "short hold short\n",
      "[175.6942   67.85978  83.61273]\n",
      "short hold short\n",
      "[174.24556   74.784454  71.00746 ]\n",
      "short hold short\n",
      "[175.81303   66.65268   85.779144]\n",
      "short hold short\n",
      "[172.78625   74.33414   71.506744]\n",
      "short hold short\n",
      "[175.82741   66.67375   85.740845]\n",
      "short hold short\n",
      "[172.06354  73.16312  73.44265]\n",
      "short hold short\n",
      "[174.75908   66.340164  86.117386]\n",
      "short hold short\n",
      "[172.76909  74.33146  71.50535]\n",
      "short hold short\n",
      "[181.3076   75.4756   71.20705]\n",
      "short hold short\n",
      "[179.615     74.938774  71.82588 ]\n",
      "short hold short\n",
      "[179.6047   74.93929  71.84607]\n",
      "short hold short\n",
      "[175.26321   67.74239   83.749374]\n",
      "short hold short\n",
      "short buy flat\n",
      "[26.818296 38.175983 71.68744 ]\n",
      "flat sell short\n",
      "[158.6605    58.911396  94.68696 ]\n",
      "short hold short\n",
      "[164.2891   64.38863  86.81363]\n",
      "short hold short\n",
      "[173.74338  73.80145  72.51731]\n",
      "short hold short\n",
      "[180.53996   75.157     71.468185]\n",
      "short hold short\n",
      "[180.10686   75.614426  70.55727 ]\n",
      "short hold short\n",
      "[174.8355   66.33429  85.98156]\n",
      "short hold short\n",
      "[172.24393   73.42858   72.836174]\n",
      "short hold short\n",
      "[176.00067   67.996704  83.24185 ]\n",
      "short hold short\n",
      "[167.59407   64.15267   88.363556]\n",
      "short hold short\n",
      "[165.02518  61.85368  91.93089]\n",
      "short hold short\n",
      "[163.05127  62.14964  93.80333]\n",
      "short hold short\n",
      "[164.11319  68.11988 100.27609]\n",
      "short hold short\n",
      "[176.44681  70.80824  92.4029 ]\n",
      "short hold short\n",
      "[153.76169   53.309605  81.385506]\n",
      "short hold short\n",
      "[167.46152   68.045525  89.147255]\n",
      "short hold short\n",
      "[170.14177   68.314354  89.2164  ]\n",
      "short hold short\n",
      "[168.37416   66.265625  92.50121 ]\n",
      "short hold short\n",
      "[172.70566   75.49647   76.965324]\n",
      "short hold short\n",
      "[177.20404   71.06273   85.768875]\n",
      "short hold short\n",
      "[170.17245   68.291214  89.278046]\n",
      "short hold short\n",
      "[168.40492  66.24245  92.56269]\n",
      "short hold short\n",
      "[165.74954   64.15283   95.740105]\n",
      "short hold short\n",
      "[164.10217   64.35874   97.249725]\n",
      "short hold short\n",
      "[166.39424   64.811745  95.81323 ]\n",
      "short hold short\n",
      "[160.81735  64.69646 100.89108]\n",
      "short hold short\n",
      "[174.23698   73.384125  99.371284]\n",
      "short hold short\n",
      "[156.27994   50.60017  110.306694]\n",
      "short hold short\n",
      "[147.58305   48.717968 109.11525 ]\n",
      "short hold short\n",
      "[147.2857    49.517292 110.51401 ]\n",
      "short hold short\n",
      "[149.8804   52.26295 112.35234]\n",
      "short hold short\n",
      "[151.63742  54.26624 109.28601]\n",
      "short hold short\n",
      "[159.33862  64.49374  92.84438]\n",
      "short hold short\n",
      "[169.12042  68.46274  88.91193]\n",
      "short hold short\n",
      "[175.6043    77.105194  74.85879 ]\n",
      "short hold short\n",
      "[182.42854  78.45582  73.83162]\n",
      "short hold short\n",
      "[182.68636  80.17296  71.18346]\n",
      "short hold short\n",
      "[177.7957    69.94857   88.007805]\n",
      "short hold short\n",
      "[169.63518  62.46815  84.48377]\n",
      "short hold short\n",
      "[157.44289  51.5658   72.29612]\n",
      "short hold short\n",
      "[159.85448  52.93352  74.17319]\n",
      "short hold short\n",
      "[161.73477   61.28615   56.997723]\n",
      "short hold short\n",
      "[169.04634   62.858204  60.200207]\n",
      "short hold short\n",
      "[168.8398    62.815296  60.08163 ]\n",
      "short hold short\n",
      "[168.43759   61.15833   62.328205]\n",
      "short hold short\n",
      "[167.71976   62.804295  59.29463 ]\n",
      "short hold short\n",
      "[166.9139    54.552074  71.13666 ]\n",
      "short hold short\n",
      "[160.19778   53.127224  69.21329 ]\n",
      "short hold short\n",
      "[160.11627   53.33308   69.570854]\n",
      "short hold short\n",
      "[160.4627    54.514713  71.415565]\n",
      "short hold short\n",
      "[161.75298   55.443264  74.966774]\n",
      "short hold short\n",
      "[166.40033   65.27962   58.789402]\n",
      "short hold short\n",
      "[170.2597    57.787197  75.3727  ]\n",
      "short hold short\n",
      "[161.76364  55.43768  74.97702]\n",
      "short hold short\n",
      "[166.40265   65.2747    58.806866]\n",
      "short hold short\n",
      "[170.27037   57.78158   75.382935]\n",
      "short hold short\n",
      "[161.95802   56.808613  74.93589 ]\n",
      "short hold short\n",
      "[163.36256   57.84531   78.645706]\n",
      "short hold short\n",
      "[168.80853   67.6117    61.763386]\n",
      "short hold short\n",
      "[171.93408  60.47173  77.69459]\n",
      "short hold short\n",
      "[163.37335   57.839733  78.655785]\n",
      "short hold short\n",
      "[168.81935  67.60618  61.77351]\n",
      "short hold short\n",
      "[171.94418   60.464115  77.71511 ]\n",
      "short hold short\n",
      "[163.3841   57.83433  78.66586]\n",
      "short hold short\n",
      "[168.83014   67.600716  61.78371 ]\n",
      "short hold short\n",
      "short buy flat\n",
      "[12.537618 24.66405  54.628727]\n",
      "flat sell short\n",
      "[168.96492   67.57902   61.530285]\n",
      "short hold short\n",
      "[172.08617  60.42026  77.5518 ]\n",
      "short hold short\n",
      "[163.28006   60.419773  80.374016]\n",
      "short hold short\n",
      "[168.0484   64.91265  87.14299]\n",
      "short hold short\n",
      "[168.17049   62.571453  83.9482  ]\n",
      "short hold short\n",
      "[161.27614  55.0497   80.3458 ]\n",
      "short hold short\n",
      "[165.68153   64.60331   63.260143]\n",
      "short hold short\n",
      "[171.21147   78.33099   83.564026]\n",
      "short hold short\n",
      "[189.84819  96.15423  87.36931]\n",
      "short hold short\n",
      "[189.61113   94.035355  88.630844]\n",
      "short hold short\n",
      "[187.78433  95.21268  91.54491]\n",
      "short hold short\n",
      "[184.5597   84.63867 103.84157]\n",
      "short hold short\n",
      "[178.62802   73.18486   93.546875]\n",
      "short hold short\n",
      "[159.794     58.959225  58.96963 ]\n",
      "short hold short\n",
      "[165.666     54.208546  70.57891 ]\n",
      "short hold short\n",
      "[159.12422  56.48235  74.87959]\n",
      "short hold short\n",
      "[168.45114  65.5666   86.12273]\n",
      "short hold short\n",
      "[168.44589   65.56682   86.132996]\n",
      "short hold short\n",
      "[172.34906  71.91149  75.62443]\n",
      "short hold short\n",
      "[172.12033  63.96967  89.69731]\n",
      "short hold short\n",
      "[162.93468  62.01401  94.11188]\n",
      "short hold short\n",
      "[165.4829    63.651577  93.8569  ]\n",
      "short hold short\n",
      "[169.24405  71.02155  76.33291]\n",
      "short hold short\n",
      "[179.26935  75.55792  70.59808]\n",
      "short hold short\n",
      "[180.65024  77.08581  71.5354 ]\n",
      "short hold short\n",
      "[182.45482  78.69057  73.38895]\n",
      "short hold short\n",
      "[177.23976  71.02605  85.95532]\n",
      "short hold short\n",
      "[168.89146   73.21237   95.107445]\n",
      "short hold short\n",
      "[186.36089   98.989075  88.8537  ]\n",
      "short hold short\n",
      "[193.47835  101.12384   91.689896]\n",
      "short hold short\n",
      "[187.68799   88.387856  97.8687  ]\n",
      "short hold short\n",
      "[185.15584  95.54473  90.5137 ]\n",
      "short hold short\n",
      "[186.28528  86.14055 101.57761]\n",
      "short hold short\n",
      "[180.36739  74.63474  91.23816]\n",
      "short hold short\n",
      "[155.67416   48.391186  75.56864 ]\n",
      "short hold short\n",
      "[154.53671   48.764362  74.09015 ]\n",
      "short hold short\n",
      "[153.91579   52.38991   79.922455]\n",
      "short hold short\n",
      "[169.30139  71.10319  76.35526]\n",
      "short hold short\n",
      "[179.14769  75.35431  71.06821]\n",
      "short hold short\n",
      "[180.49466  75.69875  70.72597]\n",
      "short hold short\n",
      "[180.5492   76.05523  70.08455]\n",
      "short hold short\n",
      "[175.84596   67.9365    83.558235]\n",
      "short hold short\n",
      "[169.74153  61.2653   79.6068 ]\n",
      "short hold short\n",
      "[156.87239  54.50671  72.27462]\n",
      "short hold short\n",
      "[169.72667  61.30875  79.67407]\n",
      "short hold short\n",
      "[157.06018   48.670856  68.84162 ]\n",
      "short hold short\n",
      "[156.18802   50.174953  65.909485]\n",
      "short hold short\n",
      "[157.0652   48.66138  68.87653]\n",
      "short hold short\n",
      "[154.35808   52.502796  75.15318 ]\n",
      "short hold short\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[167.04816   59.01972   83.249054]\n",
      "short hold short\n",
      "[154.31606  52.57478  75.35315]\n",
      "short hold short\n",
      "[165.79558  63.61336  90.09068]\n",
      "short hold short\n",
      "[165.79558  63.61336  90.09068]\n",
      "short hold short\n",
      "[165.79558  63.61336  90.09068]\n",
      "short hold short\n",
      "[166.897    65.37261  87.18835]\n",
      "short hold short\n",
      "[167.58887  64.39864  89.06248]\n",
      "short hold short\n",
      "[166.25346   63.981724  89.53315 ]\n",
      "short hold short\n",
      "[166.25346   63.981724  89.53315 ]\n",
      "short hold short\n",
      "[165.1693    62.225018  92.4371  ]\n",
      "short hold short\n",
      "[164.65082  63.48142  90.09818]\n",
      "short hold short\n",
      "[165.1693    62.225018  92.4371  ]\n",
      "short hold short\n",
      "[163.56665   61.724735  93.00193 ]\n",
      "short hold short\n",
      "[163.59634   61.63789   92.867645]\n",
      "short hold short\n",
      "[164.13033   59.122166  89.27115 ]\n",
      "short hold short\n",
      "[157.40285   55.707104  84.794106]\n",
      "short hold short\n",
      "[169.41638  71.23657  76.17438]\n",
      "short hold short\n",
      "[179.38663   75.698     70.491486]\n",
      "short hold short\n",
      "[175.85216   67.90028   83.637436]\n",
      "short hold short\n",
      "[168.3091   65.55082  86.28715]\n",
      "short hold short\n",
      "[162.27873   55.781315 102.43849 ]\n",
      "short hold short\n",
      "[154.72559   50.027477  97.30118 ]\n",
      "short hold short\n",
      "[151.44528   51.078487  67.443146]\n",
      "short hold short\n",
      "[159.20367   51.360386  71.659744]\n",
      "short hold short\n",
      "[158.82802   52.580326  68.894066]\n",
      "short hold short\n",
      "[154.06914   42.947826  85.91899 ]\n",
      "short hold short\n",
      "[151.4496   51.06506  67.46033]\n",
      "short hold short\n",
      "[160.12216   52.839077  69.16165 ]\n",
      "short hold short\n",
      "[160.38828  52.88165  69.17541]\n",
      "short hold short\n",
      "[160.33394   52.635883  69.0825  ]\n",
      "short hold short\n",
      "[158.72766   55.959713  74.51587 ]\n",
      "short hold short\n",
      "[162.50229   55.717533 102.52621 ]\n",
      "short hold short\n",
      "[154.72902   50.634785  98.337135]\n",
      "short hold short\n",
      "[147.34178   42.798122  86.433075]\n",
      "short hold short\n",
      "[139.57462   31.286669 100.818924]\n",
      "short hold short\n",
      "[130.94498   29.388384  98.94511 ]\n",
      "short hold short\n",
      "[129.54343   27.31605  101.321976]\n",
      "short hold short\n",
      "[141.19601  48.56084  64.47519]\n",
      "short hold short\n",
      "[158.8199   56.05534  74.16466]\n",
      "short hold short\n",
      "[162.61084   55.843708 102.02441 ]\n",
      "short hold short\n",
      "[159.88417   63.493336  85.81148 ]\n",
      "short hold short\n",
      "[168.41113   66.253334  86.899864]\n",
      "short hold short\n",
      "[169.93372  68.98767  88.88835]\n",
      "short hold short\n",
      "[173.56766   66.995026  83.10725 ]\n",
      "short hold short\n",
      "[161.68141  55.80321  73.23861]\n",
      "short hold short\n",
      "[145.23557   27.752443 125.90727 ]\n",
      "short hold short\n",
      "[126.11165  32.79005 105.26581]\n",
      "short hold short\n",
      "[133.03505   32.612774 108.268166]\n",
      "short hold short\n",
      "[130.95447  34.56912 111.65502]\n",
      "short hold short\n",
      "[136.61998   40.951588 121.19361 ]\n",
      "short hold short\n",
      "[140.17708  38.62102 117.02613]\n",
      "short hold short\n",
      "[127.65497  26.02775 104.22496]\n",
      "short hold short\n",
      "[125.670166  25.016253 105.09334 ]\n",
      "short hold short\n",
      "[125.06255  24.89274 104.98104]\n",
      "short hold short\n",
      "[125.11355   24.771547 104.74375 ]\n",
      "short hold short\n",
      "[124.50689   25.223337 105.49788 ]\n",
      "short hold short\n",
      "[126.788765  26.527254 107.29895 ]\n",
      "short hold short\n",
      "[125.118    24.78148 104.74247]\n",
      "short hold short\n",
      "[124.5812    25.130716 105.154045]\n",
      "short hold short\n",
      "[126.02524   27.521265 108.794235]\n",
      "short hold short\n",
      "[142.73093   53.220676  71.436615]\n",
      "short hold short\n",
      "[157.44678   47.530605  92.31715 ]\n",
      "short hold short\n",
      "[154.82709   55.647854  73.85862 ]\n",
      "short hold short\n",
      "[168.49821  65.82922  61.37914]\n",
      "short hold short\n",
      "[174.24191   66.13507   62.357227]\n",
      "short hold short\n",
      "[168.82332  63.4381   59.68778]\n",
      "short hold short\n",
      "[171.8645   64.98039  61.99641]\n",
      "short hold short\n",
      "[171.63976   64.92888   61.894672]\n",
      "short hold short\n",
      "[171.38585   64.338     61.263927]\n",
      "short hold short\n",
      "[169.32268   63.992687  60.91959 ]\n",
      "short hold short\n",
      "[174.37244   66.384346  64.96037 ]\n",
      "short hold short\n",
      "[174.48094   68.41718   61.959118]\n",
      "short hold short\n",
      "[175.66626   68.15554   62.032322]\n",
      "short hold short\n",
      "[170.12712   56.4491    74.452034]\n",
      "short hold short\n",
      "[161.72415   53.906353  71.49443 ]\n",
      "short hold short\n",
      "[158.39183   55.59637   74.615776]\n",
      "short hold short\n",
      "[169.44647   61.405087  80.90839 ]\n",
      "short hold short\n",
      "[158.60133  50.2094   71.55163]\n",
      "short hold short\n",
      "[156.99487   50.019     71.463295]\n",
      "short hold short\n",
      "[157.41873   50.135807  71.555336]\n",
      "short hold short\n",
      "[155.27223  54.08517  78.13385]\n",
      "short hold short\n",
      "[162.755     58.380688 104.709755]\n",
      "short hold short\n",
      "[157.32187   52.049015  99.51462 ]\n",
      "short hold short\n",
      "[145.98541  40.98586  83.24218]\n",
      "short hold short\n",
      "[143.9766    44.106464  88.52661 ]\n",
      "short hold short\n",
      "[154.09808  53.67185 102.06382]\n",
      "short hold short\n",
      "[154.01323  53.59714 102.57503]\n",
      "short hold short\n",
      "[153.1857    52.197132 104.660484]\n",
      "short hold short\n",
      "[151.65973   52.572483 105.45832 ]\n",
      "short hold short\n",
      "[153.1315    53.797848 108.506645]\n",
      "short hold short\n",
      "[146.73135  43.83621 125.20247]\n",
      "short hold short\n",
      "[137.28896   40.460243 126.984184]\n",
      "short hold short\n",
      "[136.37422   41.419178 129.2562  ]\n",
      "short hold short\n",
      "[150.12448   62.916424  97.989494]\n",
      "short hold short\n",
      "[167.06229  67.159    95.88994]\n",
      "short hold short\n",
      "[173.44153  77.02921  79.6321 ]\n",
      "short hold short\n",
      "[184.03442  83.3243   72.81206]\n",
      "short hold short\n",
      "[186.10565  83.8351   73.70334]\n",
      "short hold short\n",
      "[187.1451   78.20723  65.59938]\n",
      "short hold short\n",
      "[172.02666  64.01541  63.32809]\n",
      "short hold short\n",
      "[170.95895  64.27482  63.44103]\n",
      "short hold short\n",
      "[169.90016   58.751896  76.43016 ]\n",
      "short hold short\n",
      "[163.48068  57.07346  75.91828]\n",
      "short hold short\n",
      "[157.08052  47.11191  92.61431]\n",
      "short hold short\n",
      "[147.3179   43.55827  93.93674]\n",
      "short hold short\n",
      "[146.84642  45.01929  90.6142 ]\n",
      "short hold short\n",
      "[146.1279   51.83605 101.57445]\n",
      "short hold short\n",
      "[163.609     70.7264   118.792946]\n",
      "short hold short\n",
      "[168.72876   64.396706 106.29529 ]\n",
      "short hold short\n",
      "[144.3343   39.02666  87.10335]\n",
      "short hold short\n",
      "[141.2731    42.982456  93.81256 ]\n",
      "short hold short\n",
      "[152.97333  53.01141 108.32593]\n",
      "short hold short\n",
      "[151.93196   52.7693   102.851295]\n",
      "short hold short\n",
      "[154.76543  49.46008  97.24514]\n",
      "short hold short\n",
      "[143.83124   43.952152  89.39969 ]\n",
      "short hold short\n",
      "[154.47676   50.21027   98.606636]\n",
      "short hold short\n",
      "[147.15932   42.271046  86.36038 ]\n",
      "short hold short\n",
      "[151.15579   50.216473  66.74337 ]\n",
      "short hold short\n",
      "[159.99701  52.39986  67.86976]\n",
      "short hold short\n",
      "[160.17148   52.052044  68.549095]\n",
      "short hold short\n",
      "[153.79703   42.088184  85.222176]\n",
      "short hold short\n",
      "[151.17734   50.205463  66.763466]\n",
      "short hold short\n",
      "[159.97078  52.38518  67.89528]\n",
      "short hold short\n",
      "[162.59912   62.267437  55.02203 ]\n",
      "short hold short\n",
      "[169.75105  64.18115  57.87086]\n",
      "short hold short\n",
      "[171.95963   69.080826  63.101765]\n",
      "short hold short\n",
      "[182.88327   79.47286   69.977295]\n",
      "short hold short\n",
      "[185.58337   75.79123   62.717594]\n",
      "short hold short\n",
      "[164.68527   52.269962  68.615616]\n",
      "short hold short\n",
      "[159.95657   60.288822  52.920353]\n",
      "short hold short\n",
      "[164.75217  52.27071  68.66939]\n",
      "short hold short\n",
      "[157.51237   50.039387  66.54268 ]\n",
      "short hold short\n",
      "[152.4836    39.95799   82.028244]\n",
      "short hold short\n",
      "[149.80148   48.08066   63.624493]\n",
      "short hold short\n",
      "[157.31166   50.372433  65.88911 ]\n",
      "short hold short\n",
      "[159.9402    60.254925  53.015675]\n",
      "short hold short\n",
      "[167.29451   62.608097  56.323627]\n",
      "short hold short\n",
      "[169.79568  64.19648  57.82575]\n",
      "short hold short\n",
      "[170.31673   64.5252    58.055134]\n",
      "short hold short\n",
      "[170.31926   64.51876   58.086826]\n",
      "short hold short\n",
      "[170.27017   64.406235  57.93761 ]\n",
      "short hold short\n",
      "[170.07014   64.822525  58.33279 ]\n",
      "short hold short\n",
      "[170.66199  56.8848   73.40666]\n",
      "short hold short\n",
      "[166.10721  64.88057  57.52097]\n",
      "short hold short\n",
      "[170.66199  56.8848   73.40666]\n",
      "short hold short\n",
      "[166.13818   64.88559   57.530476]\n",
      "short hold short\n",
      "[170.75269   56.88332   73.439354]\n",
      "short hold short\n",
      "[162.17146   54.769444  72.49665 ]\n",
      "short hold short\n",
      "[155.77133   44.807987  89.19255 ]\n",
      "short hold short\n",
      "[147.32344   42.393375  86.44531 ]\n",
      "short hold short\n",
      "[145.85165   41.168102  83.396935]\n",
      "short hold short\n",
      "[152.25182  51.12956  66.70106]\n",
      "short hold short\n",
      "[163.24773   62.710804  55.41843 ]\n",
      "short hold short\n",
      "[168.00739  54.69701  71.12328]\n",
      "short hold short\n",
      "[162.75706   61.255573  57.26636 ]\n",
      "short hold short\n",
      "[168.61243   62.216053  58.767025]\n",
      "short hold short\n",
      "[159.86897   41.954235  83.09194 ]\n",
      "short hold short\n",
      "[150.41417   48.803066  63.12129 ]\n",
      "short hold short\n",
      "[157.38158  49.09448  68.04429]\n",
      "short hold short\n",
      "[158.66609   59.022335  54.08708 ]\n",
      "short hold short\n",
      "[166.16934  61.10532  57.09891]\n",
      "short hold short\n",
      "[166.94945   61.420063  57.42268 ]\n",
      "short hold short\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[166.40063  61.62373  57.63448]\n",
      "short hold short\n",
      "[169.41092  63.16119  59.93352]\n",
      "short hold short\n",
      "[168.86823   61.595158  61.841526]\n",
      "short hold short\n",
      "[168.02298   61.910976  62.038586]\n",
      "short hold short\n",
      "[171.5593    66.649956  59.488277]\n",
      "short hold short\n",
      "[172.77196  63.94933  64.65063]\n",
      "short hold short\n",
      "[170.59468   63.373943  63.545574]\n",
      "short hold short\n",
      "[170.07927   62.453625  64.28111 ]\n",
      "short hold short\n",
      "[167.3524   56.27856  72.95974]\n",
      "short hold short\n",
      "[165.73604   63.727757  59.091686]\n",
      "short hold short\n",
      "[171.70488   64.60334   60.747967]\n",
      "short hold short\n",
      "[168.14482  60.91402  61.27728]\n",
      "short hold short\n",
      "[167.08066   61.173664  61.393238]\n",
      "short hold short\n",
      "[170.00932   63.44131   63.695545]\n",
      "short hold short\n",
      "[172.81758   64.574875  64.86131 ]\n",
      "short hold short\n",
      "[167.66948   55.922543  72.40688 ]\n",
      "short hold short\n",
      "[162.07716  54.0853   70.22604]\n",
      "short hold short\n",
      "[159.2735    50.683887  70.865845]\n",
      "short hold short\n",
      "[157.66565   50.496403  70.80263 ]\n",
      "short hold short\n",
      "[161.59569  60.99316  56.7008 ]\n",
      "short hold short\n",
      "[168.90884   62.818165  59.611546]\n",
      "short hold short\n",
      "[168.86327   62.70605   59.465496]\n",
      "short hold short\n",
      "[166.39412   54.041363  70.19533 ]\n",
      "short hold short\n",
      "[159.4171    50.691196  70.74339 ]\n",
      "short hold short\n",
      "[158.94551   52.152256  67.420845]\n",
      "short hold short\n",
      "[160.23672   53.2412    68.988495]\n",
      "short hold short\n",
      "[161.2901    58.047245  76.50974 ]\n",
      "short hold short\n",
      "short buy flat\n",
      "[23.140882 43.155216 54.37528 ]\n",
      "flat sell short\n",
      "[168.52663  66.38586  87.35989]\n",
      "short hold short\n",
      "[170.94206   67.949684  87.0864  ]\n",
      "short hold short\n",
      "[168.89809  65.30159  85.68077]\n",
      "short hold short\n",
      "[167.79514  65.17051  86.52611]\n",
      "short hold short\n",
      "[170.21078  66.73435  86.25245]\n",
      "short hold short\n",
      "[167.79514  65.17051  86.52611]\n",
      "short hold short\n",
      "[173.87444   74.03692   76.644516]\n",
      "short hold short\n",
      "[179.67433   76.569176  75.367645]\n",
      "short hold short\n",
      "[182.2486    79.85653   73.675354]\n",
      "short hold short\n",
      "[185.21744   75.493965  65.83887 ]\n",
      "short hold short\n",
      "[168.3231    62.687588  58.987263]\n",
      "short hold short\n",
      "[168.91805   63.491352  59.762188]\n",
      "short hold short\n",
      "[171.89731   65.023796  62.05189 ]\n",
      "short hold short\n",
      "[171.38069   63.472363  63.934467]\n",
      "short hold short\n",
      "[170.7618   65.91463  66.81252]\n",
      "short hold short\n",
      "[179.45198  75.45969  71.00194]\n",
      "short hold short\n",
      "[181.80202   72.238235  64.97659 ]\n",
      "short hold short\n",
      "[167.90068   60.85245   61.463924]\n",
      "short hold short\n",
      "[166.84534   60.68987   61.169514]\n",
      "short hold short\n",
      "[167.77377   62.544613  59.44282 ]\n",
      "short hold short\n",
      "[167.02095  54.45564  71.04416]\n",
      "short hold short\n",
      "[154.44792  42.98287  85.90623]\n",
      "short hold short\n",
      "[145.8192    41.082386  84.01359 ]\n",
      "short hold short\n",
      "[145.2174    41.543446  84.75975 ]\n",
      "short hold short\n",
      "[147.56897   42.744686  86.21849 ]\n",
      "short hold short\n",
      "[145.51227   40.799618  83.36517 ]\n",
      "short hold short\n",
      "[145.70758   40.243137  82.44698 ]\n",
      "short hold short\n",
      "[144.02052   39.388287  81.337494]\n",
      "short hold short\n",
      "[145.67757   40.328625  82.58734 ]\n",
      "short hold short\n",
      "[144.53548  39.33137  80.54126]\n",
      "short hold short\n",
      "[144.76947   39.46565   80.407585]\n",
      "short hold short\n",
      "[143.41689   43.586246  87.14554 ]\n",
      "short hold short\n",
      "[155.81387  49.84274  95.68936]\n",
      "short hold short\n",
      "[144.6724    39.935055  81.30136 ]\n",
      "short hold short\n",
      "[146.11925   40.67838   82.135284]\n",
      "short hold short\n",
      "[150.72786   49.077206  64.16376 ]\n",
      "short hold short\n",
      "[158.2352   51.18919  66.26454]\n",
      "short hold short\n",
      "[160.27351   59.299145  55.631145]\n",
      "short hold short\n",
      "[166.12717  60.7784   57.69798]\n",
      "short hold short\n",
      "short buy flat\n",
      "[-5.0042443 22.873705  63.17316  ]\n",
      "flat sell short\n",
      "[166.1166    61.01202   57.515003]\n",
      "short hold short\n",
      "[166.37686   61.05846   57.510006]\n",
      "short hold short\n",
      "[166.52214   61.56612   58.038685]\n",
      "short hold short\n",
      "[169.39412   63.770634  59.7777  ]\n",
      "short hold short\n",
      "[171.39626   63.37283   63.697674]\n",
      "short hold short\n",
      "[169.8937    62.318974  64.14016 ]\n",
      "short hold short\n",
      "[167.33633  56.1527   72.77967]\n",
      "short hold short\n",
      "[165.43134   63.24786   59.442707]\n",
      "short hold short\n",
      "[171.17537   63.280254  63.731014]\n",
      "short hold short\n",
      "[169.75589   62.28706   62.555813]\n",
      "short hold short\n",
      "[167.21791   61.75224   62.011044]\n",
      "short hold short\n",
      "[173.31447  66.68504  63.44875]\n",
      "short hold short\n",
      "[174.79944   69.13045   66.550316]\n",
      "short hold short\n",
      "[181.16367   76.16861   69.492905]\n",
      "short hold short\n",
      "[181.1774    77.273796  70.75447 ]\n",
      "short hold short\n",
      "[183.02097  80.82377  73.50751]\n",
      "short hold short\n",
      "[183.733    80.11382  75.99997]\n",
      "short hold short\n",
      "[178.11235  73.07772  87.37484]\n",
      "short hold short\n",
      "[171.05574  69.44821  92.40048]\n",
      "short hold short\n",
      "[175.47646   78.707085  76.83326 ]\n",
      "short hold short\n",
      "[185.86534  77.14945  66.97844]\n",
      "short hold short\n",
      "[169.15117  56.52283  73.14403]\n",
      "short hold short\n",
      "[155.95993   45.14652   88.545616]\n",
      "short hold short\n",
      "[146.19746  41.5928   89.86813]\n",
      "short hold short\n",
      "[143.7283    39.790066  92.077484]\n",
      "short hold short\n",
      "[148.48058   49.414677  75.05966 ]\n",
      "short hold short\n",
      "[157.4236    50.418552  75.49209 ]\n",
      "short hold short\n",
      "[155.1414    49.115322  73.69726 ]\n",
      "short hold short\n",
      "[162.54158   62.2524    58.004986]\n",
      "short hold short\n",
      "[170.72266   63.775967  60.69015 ]\n",
      "short hold short\n",
      "[168.11879   62.23347   59.103886]\n",
      "short hold short\n",
      "[169.88528   66.58671   63.683025]\n",
      "short hold short\n",
      "[174.85742   65.854836  89.36726 ]\n",
      "short hold short\n",
      "[164.39417   63.50162   94.070854]\n",
      "short hold short\n",
      "[168.17615   61.070972  87.62937 ]\n",
      "short hold short\n",
      "[155.20773   49.407925  74.076645]\n",
      "short hold short\n",
      "[159.43529  54.64105  71.42923]\n",
      "short hold short\n",
      "[156.17838   45.256397  88.82225 ]\n",
      "short hold short\n",
      "[147.73051   42.841778  86.075066]\n",
      "short hold short\n",
      "[144.41112  45.79582  91.20889]\n",
      "short hold short\n",
      "[153.6725   66.0425  121.55567]\n",
      "short hold short\n",
      "[183.60738  85.13608 122.95588]\n",
      "short hold short\n",
      "[153.6725   66.0425  121.55567]\n",
      "short hold short\n",
      "[183.43234  95.36236 140.40071]\n",
      "short hold short\n",
      "[183.6285   83.85326 120.78657]\n",
      "short hold short\n",
      "[154.15593   53.587887 102.447426]\n",
      "short hold short\n",
      "[151.15617   62.138058 116.47584 ]\n",
      "short hold short\n",
      "[179.72354  80.08478 118.19498]\n",
      "short hold short\n",
      "[151.26073   61.83945  115.991196]\n",
      "short hold short\n",
      "[178.6409   78.67938 116.81523]\n",
      "short hold short\n",
      "[153.36223   52.837788 101.30476 ]\n",
      "short hold short\n",
      "[151.15617   62.138058 116.47584 ]\n",
      "short hold short\n",
      "[179.53282  91.23153 137.20976]\n",
      "short hold short\n",
      "[182.35811  93.02264 137.52382]\n",
      "short hold short\n",
      "[179.63614  85.19786 126.91745]\n",
      "short hold short\n",
      "[166.06454  65.74508 109.89219]\n",
      "short hold short\n",
      "[159.52031  62.42976  84.05631]\n",
      "short hold short\n",
      "[173.06184   72.33726   71.802956]\n",
      "short hold short\n",
      "[180.1377   75.45977  70.32396]\n",
      "short hold short\n",
      "[177.31857  98.8416  102.81792]\n",
      "short hold short\n",
      "[206.31624 103.36811  80.93634]\n",
      "short hold short\n",
      "[182.12045  72.97627  65.5027 ]\n",
      "short hold short\n",
      "[171.7403    64.959404  61.831745]\n",
      "short hold short\n",
      "[171.48299   64.36817   61.197987]\n",
      "short hold short\n",
      "[170.34966   66.222084  63.171803]\n",
      "short hold short\n",
      "[175.2071   66.39409  85.70293]\n",
      "short hold short\n",
      "[166.38434  64.33637  89.63006]\n",
      "short hold short\n",
      "[167.78766  66.94056  91.56649]\n",
      "short hold short\n",
      "[168.85168  67.52846  95.40567]\n",
      "short hold short\n",
      "[168.33331   68.78475   93.066826]\n",
      "short hold short\n",
      "[168.85168  67.52846  95.40567]\n",
      "short hold short\n",
      "[168.33331   68.78475   93.066826]\n",
      "short hold short\n",
      "[168.85168  67.52846  95.40567]\n",
      "short hold short\n",
      "[168.33331   68.78475   93.066826]\n",
      "short hold short\n",
      "[168.85168  67.52846  95.40567]\n",
      "short hold short\n",
      "[168.7349   62.69102  89.25404]\n",
      "short hold short\n",
      "[157.41766   50.41138   75.518715]\n",
      "short hold short\n",
      "[155.3002   48.6387   72.95856]\n",
      "short hold short\n",
      "[154.54063   52.587193  79.25951 ]\n",
      "short hold short\n",
      "[164.80304   62.92776   89.771286]\n",
      "short hold short\n",
      "[165.91571   63.995304  90.30797 ]\n",
      "short hold short\n",
      "[168.78989  67.7057   88.18363]\n",
      "short hold short\n",
      "[170.12494  68.98655  88.82773]\n",
      "short hold short\n",
      "[173.98091   66.33484   82.061516]\n",
      "short hold short\n",
      "[155.40012   70.964294  97.27021 ]\n",
      "short hold short\n",
      "[189.86165  126.079895 151.67236 ]\n",
      "short hold short\n",
      "[219.8441  164.11435 163.96815]\n",
      "short hold short\n",
      "[221.7111  171.26978 166.86113]\n",
      "short hold short\n",
      "[227.10318 137.67169 138.5878 ]\n",
      "short hold short\n",
      "[195.80908 110.37558 121.67374]\n",
      "short hold short\n",
      "[195.91832  110.57573  121.574875]\n",
      "short hold short\n",
      "[195.12044 134.81479 160.37212]\n",
      "short hold short\n",
      "[224.71751 177.01968 166.40384]\n",
      "short hold short\n",
      "[228.33853 192.1598  159.19775]\n",
      "short hold short\n",
      "[236.61661 130.2703   90.97572]\n",
      "short hold short\n",
      "[168.78366   62.803165  59.656788]\n",
      "short hold short\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[166.41315   52.607372  73.16764 ]\n",
      "short hold short\n",
      "[156.6066    54.3281    77.108986]\n",
      "short hold short\n",
      "[167.06894   65.08687   86.538414]\n",
      "short hold short\n",
      "[168.40417   66.36788   87.182495]\n",
      "short hold short\n",
      "[170.81972   67.931656  86.90883 ]\n",
      "short hold short\n",
      "[168.40417   66.36788   87.182495]\n",
      "short hold short\n",
      "[170.81972   67.931656  86.90883 ]\n",
      "short hold short\n",
      "[168.40417   66.36788   87.182495]\n",
      "short hold short\n",
      "[175.63704  77.00187  74.40277]\n",
      "short hold short\n",
      "[178.08209   71.08764   85.407745]\n",
      "short hold short\n",
      "[172.0064    64.389725  81.36218 ]\n",
      "short hold short\n",
      "[160.44707   52.897114  68.83937 ]\n",
      "short hold short\n",
      "[160.39922   52.876163  68.847145]\n",
      "short hold short\n",
      "[160.46445  52.89931  68.84243]\n",
      "short hold short\n",
      "[160.44409   52.877033  68.876144]\n",
      "short hold short\n",
      "[160.51692  52.98859  68.64249]\n",
      "short hold short\n",
      "[160.6642    53.105335  68.49182 ]\n",
      "short hold short\n",
      "[159.52184  56.62662  74.24155]\n",
      "short hold short\n",
      "[170.17166  62.26952  80.1446 ]\n",
      "short hold short\n",
      "short hold short\n",
      "[166.39679   52.392986  73.554115]\n",
      "short hold short\n",
      "[156.25208   54.072292  77.48211 ]\n",
      "short hold short\n",
      "short hold short\n",
      "[108.64814  -31.786577 247.26804 ]\n",
      "short hold short\n",
      "[ 64.385506    1.4627783 281.7191   ]\n",
      "short hold short\n",
      "[ 53.951736   -2.6513336 268.35233  ]\n",
      "short hold short\n",
      "[ 52.954483    -0.39270192 272.65646   ]\n",
      "short hold short\n",
      "[102.27275   60.820248 124.36014 ]\n",
      "short hold short\n",
      "[170.68521  66.6092   63.51276]\n",
      "short hold short\n",
      "[180.75981  75.6459   70.70584]\n",
      "short hold short\n",
      "[114.66097 -32.25659 249.78726]\n",
      "short hold short\n",
      "[ 62.432922    6.2968597 290.13235  ]\n",
      "short hold short\n",
      "[102.14485   60.514435 124.84508 ]\n",
      "short hold short\n",
      "[170.2287   69.9489   69.01759]\n",
      "short hold short\n",
      "[184.67758   81.318794  73.80643 ]\n",
      "short hold short\n",
      "[182.94153  78.19799  71.68086]\n",
      "short hold short\n",
      "[114.64743  -32.275726 249.83899 ]\n",
      "short hold short\n",
      "[ 61.04765   10.740961 289.6332  ]\n",
      "short hold short\n",
      "[ 61.44105    8.384211 288.00055 ]\n",
      "short hold short\n",
      "[ 62.005127   8.16353  285.54483 ]\n",
      "short hold short\n",
      "[ 62.333797    6.1512356 284.17136  ]\n",
      "short hold short\n",
      "[ 62.33827    6.163126 284.1349  ]\n",
      "short hold short\n",
      "[ 62.333797    6.1512356 284.17136  ]\n",
      "short hold short\n",
      "[110.555214  64.20165  131.7916  ]\n",
      "short hold short\n",
      "[108.66356  -31.768145 247.25659 ]\n",
      "short hold short\n",
      "[ 62.33827    6.163126 284.1349  ]\n",
      "short hold short\n",
      "[ 62.333797    6.1512356 284.17136  ]\n",
      "short hold short\n",
      "[ 62.33827    6.163126 284.1349  ]\n",
      "short hold short\n",
      "[ 62.33994     6.1608963 284.15588  ]\n",
      "short hold short\n",
      "[ 59.74936   11.988857 287.24872 ]\n",
      "short hold short\n",
      "[ 74.70403   11.647476 303.72925 ]\n",
      "short hold short\n",
      "[ 62.38181     6.1276817 284.164    ]\n",
      "short hold short\n",
      "[ 66.311      4.668148 269.61078 ]\n",
      "short hold short\n",
      "[ 74.11615    -5.9437723 248.68808  ]\n",
      "short hold short\n",
      "[ 77.85958   -9.369027 232.91475 ]\n",
      "short hold short\n",
      "[ 84.27335    -3.1382272 219.0586   ]\n",
      "short hold short\n",
      "[ 87.51617   -3.339855 216.65822 ]\n",
      "short hold short\n",
      "[ 87.55011   -3.303829 216.44897 ]\n",
      "short hold short\n",
      "[110.15498  35.36308 147.12949]\n",
      "short hold short\n",
      "[146.86539   63.169464  80.46402 ]\n",
      "short hold short\n",
      "[172.10678   68.529854  81.67113 ]\n",
      "short hold short\n",
      "[172.11078   68.520645  81.68366 ]\n",
      "short hold short\n",
      "[173.57306  71.03233  77.54644]\n",
      "short hold short\n",
      "[177.04808  68.47177  71.63162]\n",
      "short hold short\n",
      "[167.00856   62.7617    68.566795]\n",
      "short hold short\n",
      "[177.09058  68.33015  71.32476]\n",
      "short hold short\n",
      "[166.61926  62.40093  67.57569]\n",
      "short hold short\n",
      "[175.90816  71.80814  76.66525]\n",
      "short hold short\n",
      "[175.9394   71.81057  76.59324]\n",
      "short hold short\n",
      "[175.91371   71.812126  76.64391 ]\n",
      "short hold short\n",
      "[175.93893  71.80625  76.60446]\n",
      "short hold short\n",
      "[175.61092   72.675514  78.0086  ]\n",
      "short hold short\n",
      "[178.32516   74.406906  77.65508 ]\n",
      "short hold short\n",
      "[175.90242   71.80407   76.686745]\n",
      "short hold short\n",
      "[175.93893  71.80625  76.60446]\n",
      "short hold short\n",
      "[ 79.899185 -64.38106  360.10352 ]\n",
      "short hold short\n",
      "[ 55.318752 145.20201  583.11273 ]\n",
      "short buy flat\n",
      "[336.2063  140.88374 335.2074 ]\n",
      "flat hold flat\n",
      "[340.89938 136.23885 328.17172]\n",
      "flat hold flat\n",
      "[334.80637  125.032906 330.38766 ]\n",
      "flat hold flat\n",
      "[338.06924 140.3973  335.49414]\n",
      "flat hold flat\n",
      "[207.04926 237.76852 213.36519]\n",
      "flat buy long\n",
      "[ 82.19382 -63.88122 360.07574]\n",
      "long sell flat\n",
      "[207.1711  237.55055 213.63632]\n",
      "flat buy long\n",
      "[181.81163  72.11943  65.27162]\n",
      "long hold long\n",
      "[170.44536  66.03777  63.35481]\n",
      "long hold long\n",
      "[181.17653  76.24309  69.44786]\n",
      "long hold long\n",
      "[ 82.56648  -63.770607 359.83752 ]\n",
      "long sell flat\n",
      "[342.904   141.85406 336.28955]\n",
      "flat hold flat\n",
      "[341.20428 142.53389 336.17105]\n",
      "flat hold flat\n",
      "[268.07153 172.42711 300.46448]\n",
      "flat sell short\n",
      "[119.14523   70.391365  93.41728 ]\n",
      "short hold short\n",
      "[180.41476  75.499    70.70064]\n",
      "short hold short\n",
      "[180.38397  75.50097  70.76131]\n",
      "short hold short\n",
      "[180.58105  75.8151   70.14769]\n",
      "short hold short\n",
      "[174.83206  66.14983  86.16665]\n",
      "short hold short\n",
      "[171.95204  73.12941  73.17294]\n",
      "short hold short\n",
      "[180.63977   75.610695  70.51581 ]\n",
      "short hold short\n",
      "[175.55106  67.73804  83.47606]\n",
      "short hold short\n",
      "[167.23082   63.57301   89.194016]\n",
      "short hold short\n",
      "[165.44926  63.00838  89.84413]\n",
      "short hold short\n",
      "[166.64264   64.952225  86.66044 ]\n",
      "short hold short\n",
      "[167.21861   63.556293  89.259285]\n",
      "short hold short\n",
      "[166.64264   64.952225  86.66044 ]\n",
      "short hold short\n",
      "[168.59744  65.53587  86.04665]\n",
      "short hold short\n",
      "[168.3518   65.4036   86.22389]\n",
      "short hold short\n",
      "[169.89374  61.21007  79.3947 ]\n",
      "short hold short\n",
      "[157.02905   54.470448  71.9705  ]\n",
      "short hold short\n",
      "[169.87895  61.25337  79.46189]\n",
      "short hold short\n",
      "[157.1433    54.578503  72.12899 ]\n",
      "short hold short\n",
      "[169.86403   61.296825  79.52901 ]\n",
      "short hold short\n",
      "[157.64217   50.590626  66.359604]\n",
      "short hold short\n",
      "[157.48851   50.5212    66.326416]\n",
      "short hold short\n",
      "[157.67764   50.670345  66.44199 ]\n",
      "short hold short\n",
      "[157.83612   50.726788  66.5382  ]\n",
      "short hold short\n",
      "[157.71338   50.75011   66.524254]\n",
      "short hold short\n",
      "[158.18382   50.932568  66.750175]\n",
      "short hold short\n",
      "[157.74893   50.829975  66.606705]\n",
      "short hold short\n",
      "[158.52455  51.13754  66.956  ]\n",
      "short hold short\n",
      "[157.73997   50.815334  66.65767 ]\n",
      "short hold short\n",
      "[158.5156    51.122982  67.00698 ]\n",
      "short hold short\n",
      "[157.73793  50.80164  66.71466]\n",
      "short hold short\n",
      "[157.81035   55.207615  73.17918 ]\n",
      "short hold short\n",
      "[169.89374  61.21007  79.3947 ]\n",
      "short hold short\n",
      "[157.01437   54.512554  72.03427 ]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.52164  65.67341  86.18448]\n",
      "short hold short\n",
      "[168.5365    65.63004   86.117355]\n",
      "short hold short\n",
      "[169.38301   62.680676  81.699646]\n",
      "short hold short\n",
      "[160.9139   58.14472  77.36015]\n",
      "short hold short\n",
      "[169.61392  62.05582  80.61449]\n",
      "short hold short\n",
      "[162.87585   61.2645    57.953625]\n",
      "short hold short\n",
      "[168.80782   62.765278  60.2232  ]\n",
      "short hold short\n",
      "[166.91008  54.62717  70.94311]\n",
      "short hold short\n",
      "[159.26381  51.17792  72.49731]\n",
      "short hold short\n",
      "[156.50026   49.141926  75.008095]\n",
      "short hold short\n",
      "[159.73209  58.84882  59.1452 ]\n",
      "short hold short\n",
      "[167.04314   60.493282  61.706882]\n",
      "short hold short\n",
      "[166.06151   60.00346   61.172062]\n",
      "short hold short\n",
      "[166.60887   60.328312  61.45415 ]\n",
      "short hold short\n",
      "[165.2768    53.972157  69.83477 ]\n",
      "short hold short\n",
      "[157.6075    60.540478  81.16396 ]\n",
      "short hold short\n",
      "[178.11613   81.295074 100.237144]\n",
      "short hold short\n",
      "[176.35002  81.55987 101.91258]\n",
      "short hold short\n",
      "[184.16016  95.0304   88.85889]\n",
      "short hold short\n",
      "[196.27669   87.638504  70.09239 ]\n",
      "short hold short\n",
      "[168.14357   60.729397  61.906445]\n",
      "short hold short\n",
      "[167.01672   61.15035   62.169064]\n",
      "short hold short\n",
      "[170.6968   65.79659  67.65717]\n",
      "short hold short\n",
      "[179.08258  75.10043  70.89436]\n",
      "short hold short\n",
      "[181.34431  76.83625  68.26088]\n",
      "short hold short\n",
      "[182.05823  79.07995  70.61589]\n",
      "short hold short\n",
      "[178.95192   71.606514  85.196075]\n",
      "short hold short\n",
      "[169.66939   67.39374   90.799904]\n",
      "short hold short\n",
      "[157.16827   49.06764  120.858025]\n",
      "short hold short\n",
      "[142.58134   40.647602 115.00105 ]\n",
      "short hold short\n",
      "[129.94438   27.862864 102.502045]\n",
      "short hold short\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[127.01019   30.927652 107.768074]\n",
      "short hold short\n",
      "[137.34459   36.147106 114.87749 ]\n",
      "short hold short\n",
      "[125.51027   35.20284  114.782234]\n",
      "short hold short\n",
      "[149.8276   67.65473 162.91646]\n",
      "short hold short\n",
      "[182.15044  99.68045 180.48378]\n",
      "short hold short\n",
      "[183.30426 100.92089 180.7265 ]\n",
      "short hold short\n",
      "[186.6008   93.70736 165.375  ]\n",
      "short hold short\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n7t+/r/d5IiIiIiKiP4ti4tS5c2cAwIoVK/Tmubq6wsPDAw4ODmjatCkuXryoM3/jxo0YOXJkCa0q\nERERERHR62GB5332/meEhYVxVD0iIiIiIlJkTu5QrB/AJSIiIiIi+jth4kRERERERKSAiRMRERER\nEZECJk5EREREREQKmDgREREREREpYOJERERERESkgIkTERERERGRAiZORERERERECpg4ERERERER\nKWDiREREREREpICJExERERERkQImTkRERERERAqYOBERERERESlg4kRERERERKSAiRMREREREZEC\nJk5EREREREQKmDgREREREREpYOJERERERESkgIkTERERERGRAiZORERERERECpg4ERERERERKWDi\nREREREREpICJExERERERkQImTkRERERERAqYOBERERERESlg4kRERERERKSAiRMREREREZECJk5E\nREREREQKmDgREREREREpYOJERERERESkgIkTERERERGRAiZORERERERECpg4ERERERERKWDiRERE\nREREpICJExERERERkQImTkRERERERAqYOBERERERESlg4kRERERERKSAiRMREREREZECJk5ERERE\nREQKmDgREREREREpYOJERERERESkgIkTERERERGRAiZOREREREREChQTp/79++PgwYNISEhARkYG\nwsPDMXDgQO18JycnLF26FJGRkcjMzMS9e/ewceNGODk5Ga3T2dkZGRkZEBHY2dm9VF1ERERERESv\nmmLiNHXqVKSlpWHy5Mno1asXgoKCEBAQgIkTJwIAmjVrBm9vb/j5+aFHjx6YOXMmPDw8cOHCBZ2k\nqLAlS5YgMzNTb3px6iIiIiIiIvozSFHh6OioN83f31/i4uIEgNjb24uVlZXO/Lp164qIyLBhw/Q+\n+95770lKSopMnz5dRETs7Oy088yty1CEhYWZVI7BYDAYDAaDwWD8vcOc3EHxiVNKSoretIiICDg7\nOwMA0tLSoFardebHxsZCpVJpy2hYWlpi5cqVmD9/PpKTk/XqNacuIiIiIiKiP0uxBodo1aoVYmJi\njM5v0qQJ7Ozs9MpMmDABNjY2+OGHH0xelrG6iIiIiIiI/iylzP2Al5cXevfujVGjRhmcb2Fhge+/\n/x4xMTHYv3+/dnqlSpWwYMECDBkyBAUFBSYty1hdLxo7dizGjRsHAKhcubIZW0NERERERGQak/v1\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x126b89f50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Running the agent\n",
    "done = False\n",
    "state = environment.reset()\n",
    "while not done:\n",
    "    action = agent.act(state)\n",
    "    \n",
    "    for position in environment._positions:\n",
    "          if all(environment._position==environment._positions[position]):\n",
    "            position_name = position\n",
    "        \n",
    "    for _action in environment._actions:\n",
    "          if all(action==environment._actions[_action]):\n",
    "            action_name = _action\n",
    "    \n",
    "    state, _, done, info = environment.step(action)\n",
    "    \n",
    "    for position in environment._positions:\n",
    "          if all(environment._position==environment._positions[position]):\n",
    "            next_position_name = position\n",
    "               \n",
    "    print position_name, action_name, next_position_name\n",
    "    \n",
    "    if 'status' in info and info['status'] == 'Closed plot':\n",
    "        done = True\n",
    "    else:\n",
    "        environment.render()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
